У меня есть следующий фрагмент кода:
// 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 [***]
Я не уверен, является ли это результатом того, что я неправильно использовал API JavaMail, или это проблема сервера. У меня есть два замечания:
Ошибка возникает при проверке существования папки, а не при вызове getFolder.
getFolder вызывается более одного раза в коде.
Полагаю, возможно, что соединение с почтовым сервером время от времени прерывается после того, как folder.getMessages () время от времени, но оно ВСЕГДА терпит неудачу при вызове exist (), а не вызове create ().
Одно из решений заключается в том, чтобы сначала вызвать store.isConnected () и переподключить, если это необходимо, но я хочу выяснить, есть ли что-то, что я делаю неправильно, прежде чем прибегнуть к этому.
Буду признателен за любые идеи или советы о том, как глубже исследовать источник этого исключения. Заранее спасибо!