当我有很多帐户时,如何查询IMAP服务器的新邮件

时间:2012-07-31 15:06:32

标签: imap

现在,我想编写一个程序(守护进程)来查询IMAP服务器以获取新邮件,并在新邮件到达时通知客户端。我有成千上万的电子邮件帐户,所以我想知道如何高效,轻松地完成这项工作。

据我了解,我知道两种可能的解决方案。

  • 逐个查询电子邮件帐户,即'民意调查'式
  • 使用IMAP空闲扩展和事件驱动I / O(epoll)reference

我想知道这两种解决方案的优缺点。

我也想知道是否有任何库(C,C ++,PHP,Python)可以帮助我做这样的事情。或者我怎么能自己做这件事。

还是第三种解决方案?

2 个答案:

答案 0 :(得分:2)

IMAP IDLE的优势在于降低了开销,并且(可能)提高了响应速度。

轮询的优势在于它所有服务器都支持它,而所有服务器都不支持IDLE。

至于库,@ Max指出Python中的imaplib和imaplib2。我确定你提到的其他语言都有类似的库。

对于第三个选项,您可以考虑使用context.io而不是IMAP库。

答案 1 :(得分:0)

如果它是你的 imap服务器,可能还有第三个选项。在这种情况下,您可以绕过协议本身并监视服务器数据库本身的更改。这样可以更有效率,因为它省略了整个通信层。