Como corrigir Python IMAP 'command CLOSE illegal in state AUTH, only allowed in states SELECTED
Problema:
Você tem código IMAP em Python similar a
imap-example.py
server = imaplib.IMAP4_SSL('imap.mydomain.com')
server.login('email@mydomain.com', 'password')
# ...
# Limpeza
server.close()mas quando você executa, server.close() falha com uma mensagem de erro como
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 SELECTEDSolução
Antes de server.close(), você deve executar server.select() pelo menos uma vez. Em caso de dúvida, apenas server.select("INBOX") porque isso sempre funcionará.
Insira esta linha antes de server.close():
imap-select-fix.py
server.select("INBOX")Deve se parecer com isso:
imap-fixed-example.py
server = imaplib.IMAP4_SSL('imap.mydomain.com')
server.login('email@mydomain.com', 'password')
# ...
# Limpeza
server.select("INBOX")
server.close()Para um exemplo completo veja Exemplo mínimo de Python IMAP sobre 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