如果文件夹不存在,我正在尝试创建一个文件夹,然后将消息从另一个文件夹复制到目标文件夹。我发现一些我无法理解的奇怪行为。鉴于以下摘录:
// messages is an array of Message instances.
// Source is the source folder
// destination is a string of the destination folder.
Folder dest = null;
try {
dest = store.getFolder(destination);
if (!dest.exists()) {
dest.create(Folder.HOLDS_MESSAGES | Folder.HOLDS_FOLDERS);
// Since folder's are not meant to cache I thought I'd get it again
// though this does not work either.
//dest.close(false);
//dest = store.getFolder(destination);
}
dest.open(Folder.READ_WRITE);
// Fails here
source.copyMessages(messages, dest);
source.setFlags(messages, new Flags(Flags.Flag.DELETED), true);
} catch (MessagingException ex) {
throw new MailProcessorException(ex.getMessage(), ex);
} finally {
if (dest != null) {
try {
dest.close(false);
} catch (MessagingException ex) {
System.err.println("Couldn't close destination folder.");
}
}
}
检查以下行为:
- 如果文件夹不存在:
- 文件夹被创建
- 在 处引发异常
source.copyMessages
。
- 如果文件夹确实存在:
- 消息按预期复制。
- 消息被标记为删除。
我正在使用 JavaMail 1.4.6,也尝试使用 1.6.5。