大多数IMAP电子邮件客户端都具有实时自动接收电子邮件的功能,而无需定期刷新。这是因为电子邮件客户端使与服务器的连接保持打开状态,并且如果没有交换任何电子邮件数据来保持连接有效,则电子邮件客户端将以NOOP固定的间隔发送数据包(就像其他TCP协议有自己的一样) keepalive数据包)。在Thunderbird中,此行为可以通过“在收到新邮件时允许立即服务器通知”选项来控制。
我正在编写一个Python程序,该程序需要立即知道何时收到电子邮件。接收电子邮件的标准过程是(在连接和登录后)select('inbox'),search(None, 'ALL')(或某些特定的搜索词)和fetch()。我不知道如何实时收听新电子邮件。我读过的每本指南都建议循环运行search()and fetch()函数。我曾尝试read()在发送电子邮件时运行该功能,但从未见过read()输出任何数据。也许服务器需要知道将电子邮件推送到客户端?我无法证实或驳斥这一理论。
如何使用imaplib或类似的Python库立即接收新电子邮件?
虽然最初发布这个问题时我还不知道,但我正在寻找实现RFC2177中定义的IMAP IDLE命令的解决方案。
| 归档时间: |
|
| 查看次数: |
301 次 |
| 最近记录: |