【问题标题】:How to implement checking a new mail over IMAP?如何实现通过 IMAP 检查新邮件?
【发布时间】:2011-11-01 03:23:51
【问题描述】:

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

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

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

【问题讨论】:

  • afaik 雷鸟通过 IMAP IDLE en.wikipedia.org/wiki/IMAP_IDLE 做到这一点
  • 您可以使用 JavaMail 库,因此您不必自己实现所有 IMAP 功能。

标签: java email imap polling thunderbird


【解决方案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 帖子的形式接收电子邮件。这为您提供了“实时”响应时间而无需轮询电子邮件的好处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-16
    • 2015-12-03
    • 2013-12-24
    • 2013-04-14
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    相关资源
    最近更新 更多