2009-11-22 12 views

Antwort

21

Verwenden Sie die store Methode (der)Objekt, das Ihre Verbindung darstellt), um das Flag r'\Deleted' für die Nachrichtennummer festzulegen, die Sie löschen möchten, wie das Beispiel in der Dokumentation zeigt; dann die expunge Methode, um alle so markierten Löschungen tatsächlich durchzuführen.

Gmail die Implementierung von IMAP hat subtil unterschiedliche Semantik, standardmäßig, aber wenn Sie möchten, können Sie tweak es eher wie eine traditionelle IMAP-Implementierung (wo die obige Sequenz funktioniert) - im Grunde müssen Sie die "Advanced IMAP-Kontrollen "Labor, dann folgen Sie den Anweisungen an der URL, die ich gab, um genau die IMAP-Semantik erhalten Sie (physisch löschen statt zu archivieren" gelöschte "Mails, warten oder nicht für expunge, und so weiter).

16

eine E-Mail über IMAP Löschen wird in zwei Phasen durchgeführt:

  • Marke eines oder mehr Elemente zum Löschen: imap.store(msg_no, '+FLAGS', '\\Deleted')
  • die Mailbox tilgen: imap.expunge()

(imap ist Ihr IMAP4 Objekt)

+0

Dadurch wird meine E-Mail aus meinem Posteingang entfernt. Aber wenn ich Google Mail für das Element suche, ist es immer noch da. Irgendeine Idee? Verwenden Sie dies speziell mit Google Mail. Irgendein Unterschied abhängig von Python-Version oder Google Mail-Einstellungen? –

+0

Dadurch wird die E-Mail auf Ihr Fach-Label verschoben, das alle 30 Tage automatisch bereinigt wird. – hd1

8
imap.uid('STORE', list_of_msgno , '+FLAGS', '(\Deleted)') 
imap.expunge() 

d.h

imap.uid('STORE', '2, 4, 9, 12' , '+FLAGS', '(\Deleted)') 

Hier (2, 4, 9, 12) sind uid der Nachrichten, die gelöscht werden wollen.

+0

ist UID dasselbe wie was wir von imap.search bekommen? – user5319825

+0

Es funktioniert nicht – user5319825

Verwandte Themen