0
Pop3Folder
을 성공적으로 열고 메시지를 검색하면 folder.isOpen
이 false
인 경우 가끔 가끔 나타납니다. 동시에, 디버그 모드에서 Pop3Folder
의 필드를 보면 opened
필드가 true
으로 설정되어있는 것을 볼 수 있습니다.JavaMail - Pop3Folder가 실수로 닫힘
누군가 나에게 힌트를 줄 수 있습니까? 여기에 잘못 될 수 있습니다. 당신의 processMessage를 방법이 너무 오래 걸리는 경우 서버는 연결 시간이 초과 될 수 있습니다
public void popMail(MessageProcessor messageProcessor) throws MessagingException {
Folder inboxFolder = null;
Store store = null;
try {
store = mailSession.getStore();
store.connect(mailSession.getProperty("mail.user"),
mailSession.getProperty("mail.password"));
// OK. Connected to POP3 Store.
inboxFolder = store.getFolder("inbox");
inboxFolder.open(Folder.READ_WRITE);
// The folder is successfully opened.
Message[] msgs = inboxFolder.getMessages();
// Messages are successfully retrieved.
if (msgs != null && msgs.length > 0) {
for (Message msg : msgs) {
if (messageProcessor != null) {
// Calling custom listener to process message
messageProcessor.processMessage(msg);
}
msg.setFlag(Flag.DELETED, true);
}
}
} finally {
// Oops, inboxFolder.isOpen returns false.
// Meanwhile I see in debug mode that inboxFolder#opened is set to true
if (inboxFolder != null && inboxFolder.isOpen()) {
try {
inboxFolder.close(true);
} catch (MessagingException e) {
log.warn("Error while closing folder");
}
} if (store != null) {
try {
store.close();
} catch (MessagingException e) {
log.warn("Error while closing store");
}
}
}
}
감사합니다. 이것에 대해 살펴 보겠습니다. – jFrenetic
디버깅을 사용하지 않았지만 약 2 분 동안 메시지를 처리 한 후 폴더가 결국 닫히게됩니다. 예, 서버 연결 시간 초과 가능성이 큽니다. 다시 한 번 감사드립니다! – jFrenetic