如何通过IMAP实现检查新邮件?

时间:2011-11-01 03:23:51

标签: java email imap polling thunderbird

我计划在Java中实现邮件程序。 因此,我有一个关于检查新邮件是否存在的问题。

例如,在Thunderbird中, 轮询间隔选项存在于服务器首选项中。 (默认间隔为10分钟。) 但是,thunderbird看起来像是在新邮件到来时立即通知。 此行为相同,但默认间隔更改。

这个间隔是什么意思? 而且,如何实现应用程序在新邮件到来时立即通知。 (我应该实现一个应用程序有轮询检查功能是否有新邮件?)

1 个答案:

答案 0 :(得分:1)

默认情况下,当使用IMAP时,客户端将连接,查看是否有任何新消息,是否有处理它们并断开连接,如果不是断开连接。然后客户将在间隔10分钟后再次尝试。但是,IMAP中有一个名为IDLE的命令。这基本上表明您希望保持连接打开并在发生新消息时得到通知。该命令在RFC2177中定义。

命令相当简单(来自RFC2177):

C: A002 IDLE
S: + idling
...time passes; new mail arrives...
S: * 4 EXISTS
C: DONE

我不确定是否有任何java客户端支持这个,但如果没有,那么实现它将是非常简单的。您还需要添加一些内容来检查服务器是否支持IDLE命令(使用功能),还需要在发生故障时重新连接。

值得注意的是,有http://cloudmailin.com等系统允许您以http帖子的形式接收电子邮件。这样您就可以获得“实时”响应时间,而无需根据电子邮件进行轮询。