Javamail - 收到电子邮件后立即接收

时间:2017-01-11 18:56:31

标签: java email javamail

我使用 Javamail 从我的IMAP电子邮件帐户中获取一些邮件。它运作良好,但有时电子邮件不会同时到达服务器。

我该如何解决它?

2 个答案:

答案 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);