访问收件箱时出现未知IMAP4命令:'idle
我正在尝试实时检查新邮件。我觉得下面的代码应该可以正常工作,但我遇到了一个错误:“AttributeError: Unknown IMAP4 command: 'idle'”。有没有人能帮我看看问题出在哪里?
import imaplib
import email
username = "test@xxxxx.com"
password = "xxxxx"
# Connect to the IMAP server
mail = imaplib.IMAP4_SSL('mail.xxxxx.com')
# Login to the server
mail.login(username, password)
# Select the INBOX folder
mail.select("INBOX")
# Start listening for new emails
mail.idle()
1 个回答
1
更新的回答:
imaplib
不支持 IDLE
命令。关于这个问题的 GitHub 讨论(从2011年开始的!)仍然在进行中 --> https://github.com/python/cpython/issues/55454
这里有几种解决方案,所以我就不再重复已有的内容了(这个说法有点玩笑的意思)。
旧的回答
我猜测你的邮箱服务器可能不支持 IDLE
命令。
这里简单回顾一下 IDLE
命令,注意这只是一个可选功能。
你可以使用下面的代码来检查这个(登录服务器并不是检查功能所必需的):
import imaplib
mail = imaplib.IMAP4_SSL('mail.xxxxx.com')
print(mail.capabilities)
这段代码会输出一个 tuple[str]
,看起来应该是这样的:
('IMAP4REV1', 'UNSELECT', 'IDLE', 'NAMESPACE', 'QUOTA', 'ID', 'XLIST', 'CHILDREN', 'X-GM-EXT-1', 'XYZZY', 'SASL-IR', 'AUTH=XOAUTH2', 'AUTH=PLAIN', 'AUTH=PLAIN-CLIENTTOKEN', 'AUTH=OAUTHBEARER')
注意我从 GMail 收到的响应中包含了 IDLE
的能力...