如何修复 Python IMAP "command CLOSE illegal in state AUTH, only allowed in states SELECTED"
问题:
你有类似这样的 Python IMAP 代码
imap-example.py
server = imaplib.IMAP4_SSL('imap.mydomain.com')
server.login('email@mydomain.com', 'password')
# ...
# 清理
server.close()但当你运行它时,server.close() 失败并显示类似这样的错误消息
imap-traceback.txt
Traceback (most recent call last):
File "./imaptest.py", line 13, in <module>
server.close()
File "/usr/lib/python3.6/imaplib.py", line 461, in close
typ, dat = self._simple_command('CLOSE')
File "/usr/lib/python3.6/imaplib.py", line 1196, in _simple_command
return self._command_complete(name, self._command(name, *args))
File "/usr/lib/python3.6/imaplib.py", line 944, in _command
', '.join(Commands[name])))
imaplib.error: command CLOSE illegal in state AUTH, only allowed in states SELECTED解决方案
在 server.close() 之前,你必须至少运行一次 server.select()。如果有疑问,只需 server.select("INBOX") 因为这总是有效。
在 server.close() 之前插入此行:
imap-select-fix.py
server.select("INBOX")它应该如下所示:
imap-fixed-example.py
server = imaplib.IMAP4_SSL('imap.mydomain.com')
server.login('email@mydomain.com', 'password')
# ...
# 清理
server.select("INBOX")
server.close()完整示例请参见最小 Python IMAP over SSL 示例
Check out similar posts by category:
Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow