2016-11-30 4 views
0

Ich schrieb ein Python-Skript, um einige Aufgaben auf meinem Mail-Konto zu automatisieren. Also, ich kann mich in meinen Yahoo Mail Account einloggen, lesen, löschen (via imap) und Emails senden (via SMTP). Danach möchte ich mich ausloggen. Allerdings bin ich diesen Fehler, die ich weiß nicht, wie zu reparieren:Python imaplib: Ich kann mich nicht aus Imap abmelden

Dies ist, was passiert:

Exception in close_imap 
Traceback (most recent call last): 
    File "/Users/Tom/MeineDaten/Programmieren/Sportwetten/Tipico/Report-Gambling-Apps/emailing/Mailer.py", line 55, in close_imap 
    self.imap.close() 
    File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/imaplib.py", line 445, in close 
    typ, dat = self._simple_command('CLOSE') 
    File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/imaplib.py", line 1180, in _simple_command 
    return self._command_complete(name, self._command(name, *args)) 
    File "/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/imaplib.py", line 928, in _command 
    ', '.join(Commands[name]))) 
imaplib.IMAP4.error: command CLOSE illegal in state LOGOUT, only allowed in states SELECTED 

Und das ist der entsprechende Code:

import imaplib 

...other code here... 

def close_imap(self): 
    if self.imap is None: 
     print("close_imap: self.imap is None. No further action taken. Returning.") 
     return 
    try: 
     self.imap.close() 
     self.imap.logout() 
    except Exception: 
     print("Exception in close_imap") 
     print(str(traceback.format_exc())) 
     pass 

Was bin ich hier falsch machen?

+0

Betrachten Sie die Traceback: 'Datei" /path/to/my/python/project/emailing/Mailer.py ", Zeile 55, in close_imap'' self.imap.select ('INBOX') '. Fehler append an Zeile 'self.imap.select ('INBOX')' diese Zeile ist nicht in dem Beispiel, das Sie angegeben haben. Zwei Lösungen: Sie geben nicht den wirklichen Code, mit dem Sie kämpfen, ODER Sie führen dieses Skript nicht aus, sondern ein anderes (pyc Problem?). – Arount

+0

Initiaty wenn ich diese Frage stelle, habe ich einen falschen Stacktrace hinzugefügt. Ich habe die Frage mit einem anderen Stacktrace aktualisiert. Sorry, aber thx für die Antwort – toom

+1

Ok, ich denke du hast deine Verbindung zweimal geschlossen, kannst du den ganzen Code veröffentlichen? – Arount

Antwort

0

Sie versuchen, einen Ordner zu schließen, aber Sie haben keinen ausgewählt.

Dies zurückzuführen sein kann auf zwei denkt:

  • Sie nie einen Ordner in dieser Sitzung
  • Sie bereits den Ordner ausgewählt geschlossen, aber Sie versuchen, es ein zweites Mal zu schließen.

Sie sollten einen Ordner nur einmal schließen.

Hinweis: Dies ist im IMAP-Protokoll nicht erforderlich, um einen Ordner vor dem Abmelden zu schließen.

Verwandte Themen