Jak opravit Python IMAP 'command CLOSE illegal in state AUTH, only allowed in states SELECTED
Problém:
Máte IMAP kód v Pythonu podobný
imap-example.py
server = imaplib.IMAP4_SSL('imap.mydomain.com')
server.login('email@mydomain.com', 'password')
# ...
# Cleanup
server.close()ale když ho spustíte, server.close() failne s chybovou zprávou jako
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Řešení
Před server.close() musíte spustit server.select() alespoň jednou. V případě pochybností prostě server.select("INBOX"), protože to vždy funguje.
Vložte tento řádek před server.close():
imap-select-fix.py
server.select("INBOX")Mělo by to vypadat takto:
imap-fixed-example.py
server = imaplib.IMAP4_SSL('imap.mydomain.com')
server.login('email@mydomain.com', 'password')
# ...
# Cleanup
server.select("INBOX")
server.close()Pro kompletní příklad viz Minimální Python IMAP over SSL příklad
Podívejte se na podobné články podle kategorie:
Python
Pokud vám tento článek pomohl, zvažte, zda mi nekoupíte kávu nebo nepřispějete přes PayPal na podporu výzkumu a publikování nových článků na TechOverflow