我有以下代码片段:
// using classes from javax.mail.*
// Session / Store setup code
// Store implementation class = com.sun.mail.imap.IMAPStore
Folder folder = store.getFolder("INBOX"); // store setup previously
folder.open(Folder.READ_WRITE);
Message[] messages = folder.getMessages();
Folder anotherFolder = store.getFolder("F1");
if ( !anotherFolder.exists()) { [***]
anotherFolder.create(Folder.HOLDS_MESSAGES);
}
folder.copyMessages(messages, anotherFolder);
有时,我会收到以下异常:
javax.mail.StoreClosedException: failed to create new store connection
at com.sun.mail.imap.IMAPFolder.throwClosedException(IMAPFolder.java:2208)
at com.sun.mail.imap.IMAPFolder.doCommand(IMAPFolder.java:2335)
at com.sun.mail.imap.IMAPFolder.exists(IMAPFolder.java:427)
at [***]
我不确定这是由于我不正确使用JavaMail API还是由于服务器问题。我有两个观察结果:
我想可能不时在folder.getMessages()之后的某个时间点断开与邮件服务器的连接,但是相对于create()调用,它总是在exist()调用上失败。
一种解决方案是先调用store.isConnected()并在需要时重新连接,但是我想弄清楚在诉诸该方法之前是否先做错了什么。
对于如何深入探究此异常源的任何见解或建议,我将不胜感激。提前致谢!
最佳答案
问题是您没有关闭文件夹。使用后,我们必须关闭文件夹。
需要时再次打开该文件夹。不要多次打开同一文件夹。
folder.close(false);
.
.
.
.
.
.
if (!folder.isOpen()) {
folder.open(Folder.READ_ONLY);
}