Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何实现通过IMAP检查新邮件?_Java_Email_Imap_Polling_Thunderbird - Fatal编程技术网

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

Java 如何实现通过IMAP检查新邮件?,java,email,imap,polling,thunderbird,Java,Email,Imap,Polling,Thunderbird,我计划用Java实现mailer应用程序。 因此,我有一个关于检查是否存在新邮件的问题 例如,在《雷鸟》中, 服务器首选项中存在轮询间隔选项。 (默认间隔为10分钟。) 但是,雷鸟看起来会在收到新邮件时立即通知。 这种行为是相同的,但默认间隔会改变 这个间隔意味着什么? 还有,我如何实现应用程序在收到新邮件时立即通知。 (我是否应该实现应用程序是否具有轮询检查功能来检查是否有新邮件?默认情况下,当使用IMAP时,客户端将连接,查看是否有任何新邮件,是否有处理它们并断开连接,如果不只是断开连接。客

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

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

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

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

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

我不确定是否有任何java客户机支持这一点,但如果没有,实现起来就很简单了。您还需要添加一些内容来检查服务器是否支持IDLE命令(使用功能),并在出现故障时重新连接


还值得注意的是,有一些系统允许您以http post的形式接收电子邮件。这为您提供了一个“实时”响应时间的好处,而无需轮询电子邮件。

afaik thunderbird通过IMAP IDLE实现了这一点,您可以使用JavaMail库,因此您不必自己实现所有IMAP功能。
C: A002 IDLE
S: + idling
...time passes; new mail arrives...
S: * 4 EXISTS
C: DONE