我使用 Javamail 从我的IMAP电子邮件帐户中获取一些邮件。它运作良好,但有时电子邮件不会同时到达服务器。
我该如何解决它?
答案 0 :(得分:1)
您受服务器的支配以及它会在多长时间内通知客户新消息。
另请注意,如果您空闲30分钟(通常),服务器将关闭您的连接,您需要重新连接。如果你想保持连接打开,你应该定期做一些像folder.getMessageCount()这样的事情,它会让你脱离IMAP IDLE状态并告诉服务器你还在使用连接,重置空闲超时。
当然,由于这是一个网络,连接可能因许多其他原因而无法阻止,因此您始终需要准备好处理断开的连接。
答案 1 :(得分:0)
您可以监控此类文件夹
来自here
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
folder.addMessageCountListener(new MessageCountAdapter() {
public void messagesAdded(MessageCountEvent ev) {
Folder folder = (Folder)ev.getSource();
Message[] msgs = ev.getMessages();
System.out.println("Folder: " + folder +
" got " + msgs.length + " new messages");
try {
// process new messages
idleManager.watch(folder); // keep watching for new messages
} catch (MessagingException mex) {
// handle exception related to the Folder
}
}
});
idleManager.watch(folder);