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();
}
}