每当我想查看是否有新邮件时,是否有办法使用imaplib监控gmail帐户而不轮询gmail。或者换句话说,我只是想要通知脚本一条新消息,以便我可以立即处理它而不是轮询之间的任何延迟时间。

我看到IMAP协议使用IDLE命令支持这一点,但我在imaplib文档中看不到任何记录,所以任何帮助都会很棒!

有帮助吗?

解决方案

imaplib中没有这样做,AFAIK(disclamer:我对Python知之甚少),然而,似乎有人为Python实现了IDLE扩展,它具有与imaplib相同的接口(你可以交换出来,显然没有改变现有代码):

https://github.com/imaplib2/imaplib2

其他提示

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

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

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

补丁 .python.org / issue11245“rel =”nofollow“> bugs.python.org 实施 RFC 2177 IMAP IDLE 命令以同步方式(等待多于1个IMAP服务器,您必须使用线程或其他并行执行方式)。它使用stdlib select在套接字上等待包括超时。此补丁将最终添加到stdlib,但必须首先编写测试 IDLE 命令就是需要。 希望,这会有所帮助:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top