byte[] b = new byte[BUF_SIZE];
int len = 0;
while ((len = input.read(b)) != -1)
fos.write(b, 0, len);
} catch (IOException ioe) {
throw new MailboxException("Failure while save Message " + message + " in Mailbox " + mailbox, ioe);
} finally {
try {
if (fos != null)
fos.close();
} catch (IOException e) {
}
try {
if (input != null)
input.close();
} catch (IOException e) {
}
}
File newMessageFile = null;
// delivered via SMTP, goes to ./new without flags
if (message.isRecent()) {
messageName.setFlags(message.createFlags());
newMessageFile = new File(folder.getNewFolder(), messageName.getFullName());
// System.out.println("save new recent " + message + " as " +
// newMessageFile.getName());
}
// appended via IMAP (might already have flags etc, goes to ./cur
// directly)
else {
messageName.setFlags(message.createFlags());
newMessageFile = new File(folder.getCurFolder(), messageName.getFullName());
// System.out.println("save new not recent " + message + " as "
// + newMessageFile.getName());
}
try {
FileUtils.moveFile(messageFile, newMessageFile);
} catch (IOException e) {
// TODO: Try copy and delete
throw new MailboxException("Failure while save Message " + message + " in Mailbox " + mailbox, e);
}
try {
uid = folder.appendMessage(mailboxSession, newMessageFile.getName());
message.setUid(uid);
message.setModSeq(newMessageFile.lastModified());
return new SimpleMessageMetaData(message);
} catch (MailboxException e) {
throw new MailboxException("Failure while save Message " + message + " in Mailbox " + mailbox, e);
}
}