26

有没有一种方法可以使用 imaplib 监控 gmail 帐户,而无需每次我想查看是否有新邮件时轮询 gmail。或者换句话说,我只想通知脚本有新消息,以便我可以立即处理它,而不是轮询之间的任何滞后时间。

我看到 IMAP 协议通过 IDLE 命令支持这一点,但我在 imaplib 文档中看不到任何与它相关的文档,因此对此的任何帮助都会很棒!

4

4 回答 4

15

imaplib 中没有任何东西可以做到这一点,AFAIK(免责声明:我对 Python 知之甚少),但是,似乎有人已经为 Python 实现了一个 IDLE 扩展,它具有与 imaplib 相同的接口(你可以用显然,对现有代码没有任何更改):

https://github.com/imaplib2/imaplib2

于 2009-01-07T18:04:46.663 回答
6

查看ProcImap。它是在 libimap 和 libimap2 之上的一个更抽象的框架,为处理 IMAP 服务提供了一个很好的解决方案。看起来就像你正在寻找的东西,对我来说也是如此。我对你有同样的问题,刚刚找到了 ProcImap。我自己试试吧。

于 2009-01-14T06:44:40.800 回答
3

此链接显示了使用 IMAP IDLE 的示例:http: //blog.timstoop.nl/2009/03/11/python-imap-idle-with-imaplib2/

它使用与 casperOne 的答案(imaplib2)中链接的相同库。

于 2011-01-28T21:23:28.717 回答
2

bugs.python.org提出了一个简单的补丁,以同步方式实现 [RFC 2177 IMAP IDLE] 3命令(要等待超过 1 个 IMAP 服务器,您必须使用线程或其他并行执行方式)。它使用 stdlib select 等待套接字,包括超时。这个补丁最终会被添加到标准库中,但必须先编写测试IDLE命令是gmail IMAP 推送通知所需的。希望,这会有所帮助:)

于 2013-04-19T20:26:11.600 回答