作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个文件夹(如果它不存在),然后将邮件从另一个文件夹复制到目标文件夹。我发现一些我无法理解的奇怪行为。给出以下摘录:
// 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。
最佳答案
这真的很奇怪。查看您的代码并阅读文档,应该不会发生这种情况......
邮件服务器有问题吗?某些数据库使用一致性模型(例如,请参阅 http://en.wikipedia.org/wiki/Eventual_consistency),但这些模型并不总是按照您天真的期望的方式运行。您是否有机会在不同的邮件服务器上尝试您的代码?或者,尝试在 copyMessages(...)
调用之前放置一个很长的时间(30 秒?)Thread.sleep(...)
,看看是否可以解决问题.
如果是这样,则说明您的服务器在一个请求中创建了该文件夹,但此创建需要一段时间才能到达处理消息复制的服务器代码部分。然后,不幸的是,我不确定如果复制失败或人为延迟(这很糟糕),除了重试之外,您是否还能做很多事情。
旁白:文档似乎说,如果您愿意,您可以跳过 dest.open(Folder.READ_WRITE);
。
关于java - 为什么成功创建文件夹后出现FolderNotFoundException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14805119/
我是一名优秀的程序员,十分优秀!