实时收听传入的电子邮件

时间:2019-07-14 22:04:21

标签: imaplib

大多数IMAP电子邮件客户端都具有实时自动接收电子邮件的功能,而无需按固定间隔刷新。这是因为电子邮件客户端使与服务器的连接保持打开状态,并且如果没有交换任何电子邮件数据来保持连接有效,则电子邮件客户端将以固定间隔发送NOOP数据包(就像其他TCP协议有其自己的keepalive数据包)。在Thunderbird中,此行为可以通过“在收到新邮件时允许即时服务器通知”选项来控制。

我正在编写一个基于imaplib的Python程序,该程序需要立即知道何时收到电子邮件。接收电子邮件的标准过程是(在连接和登录后)select('inbox')search(None, 'ALL')(或某些)特定搜索字词)和fetch()。我不知道如何实时收听新电子邮件。我读过的每本指南都建议循环运行search()fetch()函数。我尝试在向自己发送电子邮件时运行read()函数,但是从未见过read()输出任何数据。也许服务器需要知道将电子邮件推送到客户端?我无法证实或反驳这一理论。

如何通过imaplib立即接收新电子邮件?

2 个答案:

答案 0 :(得分:0)

由于要异步获取电子邮件,因此应使用以下库

https://github.com/bamthomas/aioimaplib

答案 1 :(得分:0)