我有一个用 Java 实现邮件应用程序的计划。因此,我有一个关于检查新邮件是否存在的问题。
例如,在 Thunderbird 中,轮询间隔选项存在于服务器首选项中。(默认间隔是 10 分钟。)但是,当新邮件到达时,thunderbird 看起来会立即通知。此行为相同,但默认间隔更改。
这个间隔是什么意思?而且,我如何实现应用程序在收到新邮件时立即通知。(我是否应该实现一个应用程序是否有新邮件的轮询检查功能?)
我有一个用 Java 实现邮件应用程序的计划。因此,我有一个关于检查新邮件是否存在的问题。
例如,在 Thunderbird 中,轮询间隔选项存在于服务器首选项中。(默认间隔是 10 分钟。)但是,当新邮件到达时,thunderbird 看起来会立即通知。此行为相同,但默认间隔更改。
这个间隔是什么意思?而且,我如何实现应用程序在收到新邮件时立即通知。(我是否应该实现一个应用程序是否有新邮件的轮询检查功能?)
默认情况下,当使用 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 帖子的形式接收电子邮件。这为您提供了“实时”响应时间而无需轮询电子邮件的好处。