classpathx-javamail
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Classpathx-javamail] Folder.copyMessages


From: Chris Burdess
Subject: Re: [Classpathx-javamail] Folder.copyMessages
Date: Thu, 31 May 2007 11:26:08 +0100

remi__ wrote:
I am writing some code to move a mail from a folder to another. The idea is
to copy it to another folder and then delete the orignal.

Is that normal that this code:

private void moveMail(Message message){
        try {
                Folder dossierSrc = message.getFolder();
                Store store = dossierSrc.getStore();
                Folder dossierDest = store.getFolder("processedMails");
                if (dossierDest != null && dossierDest.exists()) {
                        dossierSrc.copyMessages(new Message[]{message}, 
dossierDest);
                        message.setFlag(Flags.Flag.DELETED,true);
                }
        } catch (MessagingException e) {
                        e.printStackTrace();
        }
}

leads to a NPE:

java.lang.NullPointerException
        at
gnu.mail.providers.imap.IMAPMultipartDataSource.getInputStream (IMAPMultipartDataSource.java:102)
        at javax.activation.DataHandler.writeTo(DataHandler.java:215)
        at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1618)
        at gnu.mail.providers.imap.IMAPMessage.writeTo(IMAPMessage.java:859)
        at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1553)
        at gnu.mail.providers.imap.IMAPMessage.writeTo(IMAPMessage.java:845)
at gnu.mail.providers.imap.IMAPFolder.appendMessages (IMAPFolder.java:712)
        at javax.mail.Folder.copyMessages(Folder.java:669)
at TestDeplacementMailGNU112.moveMail (TestDeplacementMailGNU112.java:63)
        at TestDeplacementMailGNU112.test(TestDeplacementMailGNU112.java:47)
        at TestDeplacementMailGNU112.main(TestDeplacementMailGNU112.java:31)


Whereas that piece of code works fine:

private void moveMail(Message message){
        try {
                Folder dossierSrc = message.getFolder();
                Store store = dossierSrc.getStore();
                Folder dossierDest = store.getFolder("processedMails");
                if (dossierDest != null && dossierDest.exists()) {
                        dossierDest.appendMessages(new Message[]{message});
                        message.setFlag(Flags.Flag.DELETED,true);
                }
        } catch (MessagingException e) {
                        e.printStackTrace();
        }
}

That sounds very strange, because copyMessages simply calls appendMessages internally.

Could you try with CVS HEAD? I've added a null pointer check at a critical point.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]