【问题标题】:How do I enable push-notification for IMAP (Gmail) using Python imaplib?如何使用 Python imaplib 为 IMAP (Gmail) 启用推送通知?
【发布时间】:2010-09-30 02:06:56
【问题描述】:

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

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

【问题讨论】:

    标签: python gmail imap


    【解决方案1】:

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

    https://github.com/imaplib2/imaplib2

    【讨论】:

    • +1 - 我最近在使用 imaplib,发现你描述的事情的状态。
    • 提供的链接不再存在。该软件包可以在sourceforge 上找到
    【解决方案2】:

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

    【讨论】:

    • 哇。这正是我正在寻找编写客户端过滤器的内容。
    • @evo 这对你有用吗?我还希望获得有关新消息的推送通知,而不是轮询。你用了 ProcImap 中的什么函数?
    • @Alexis 我猜ImapServer.idle
    【解决方案3】:

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

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

    【讨论】:

    【解决方案4】:

    bugs.python.org 提出了简单的patch 以同步方式实现 [RFC 2177 IMAP IDLE] 3 命令(要等待超过 1 个 IMAP 服务器,您必须使用线程或其他并行执行方式) .它使用 stdlib select 等待套接字,包括超时。此补丁将eventually 添加到标准库but tests have to be written firstIDLE 命令是你 need 用于 gmail IMAP 推送通知的命令。 希望,这会有所帮助:)

    【讨论】:

    • 遗憾的是,补丁仍然不是标准库的一部分。可以使用托管在 sourceforge 上的 imaplib2 或托管在 github 上的 imapclient
    猜你喜欢
    • 2018-04-17
    • 2017-08-14
    • 2020-10-18
    • 1970-01-01
    • 2011-05-03
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多