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



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

例如,在Thunderbird中,在服务器首选项中存在轮询间隔选项。(默认间隔为10分钟)但是,雷鸟看起来会在收到新邮件时立即通知。无论默认间隔如何改变,此行为都是相同的。

这个间隔是什么意思?当收到新邮件时,如何实现应用程序立即通知。(我是否应该实现应用程序具有轮询检查功能,以确定新邮件是否收到?)

默认情况下,当使用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 post的形式接收电子邮件。这给了你一个"实时"响应时间的好处,而不必对电子邮件进行轮询。

最新更新