每当我想查看是否有新邮件时,是否有办法使用imaplib监控gmail帐户而不轮询gmail。或者换句话说,我只是想要通知脚本一条新消息,以便我可以立即处理它而不是轮询之间的任何延迟时间。
我看到IMAP协议使用IDLE命令支持这一点,但我在imaplib文档中看不到任何记录,所以任何帮助都会很棒!
答案 0 :(得分:13)
imaplib中没有这样做,AFAIK(disclamer:我对Python知之甚少),然而,似乎有人为Python实现了IDLE扩展,它具有与imaplib相同的接口(你可以换掉现有代码没有改变,显然):
答案 1 :(得分:6)
结帐ProcImap。它是libimap和libimap2之上的一个更抽象的框架,为处理IMAP服务提供了一个很好的解决方案。看起来就像你正在寻找的东西,对我来说也是如此。我对你有同样的问题,刚刚找到了ProcImap。要亲自试试。
答案 2 :(得分:2)
此链接显示了使用IMAP IDLE的示例:http://blog.timstoop.nl/2009/03/11/python-imap-idle-with-imaplib2/
它使用与casperOne的答案(imaplib2)链接的相同库。
答案 3 :(得分:2)
在patch以同步方式实现bugs.python.org命令时提出简单的RFC 2177 IMAP IDLE(等待超过1个IMAP服务器,您必须使用线程或其他并行执行方式) 。它使用stdlib select在套接字上等待包括超时。此补丁将eventually添加到stdlib,but tests have to be written first。 IDLE命令是need用于gmail IMAP推送通知的命令。 希望,这会有所帮助:)