Comment corriger l'erreur Python IMAP « command CLOSE illegal in state AUTH, only allowed in states SELECTED »
Problème :
Vous avez du code IMAP en Python similaire à
imap-example.py
server = imaplib.IMAP4_SSL('imap.mydomain.com')
server.login('email@mydomain.com', 'password')
# ...
# Nettoyage
server.close()mais lorsque vous l’exécutez, server.close() échoue avec un message d’erreur de ce type
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 SELECTEDSolution
Avant server.close(), vous devez exécuter server.select() au moins une fois. En cas de doute, faites simplement server.select("INBOX") car cela fonctionnera toujours.
Insérez cette ligne avant server.close() :
imap-select-fix.py
server.select("INBOX")Cela devrait ressembler à ceci :
imap-fixed-example.py
server = imaplib.IMAP4_SSL('imap.mydomain.com')
server.login('email@mydomain.com', 'password')
# ...
# Nettoyage
server.select("INBOX")
server.close()Pour un exemple complet, voir Exemple minimal de IMAP sur SSL en Python
Consultez les articles similaires par catégorie :
Python
Si cet article vous a aidé, pensez à m'offrir un café ou à faire un don via PayPal pour soutenir la recherche et la publication de nouveaux articles sur TechOverflow