Können Sie E-Mails mit imaplib löschen? Wenn das so ist, wie?Mit Python imaplib "eine E-Mail von Google Mail löschen"?
Antwort
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).
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)
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? –
Dadurch wird die E-Mail auf Ihr Fach-Label verschoben, das alle 30 Tage automatisch bereinigt wird. – hd1
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.
ist UID dasselbe wie was wir von imap.search bekommen? – user5319825
Es funktioniert nicht – user5319825
ab Mitte 2012 keine der Antworten funktioniert, wenn Sie zuerst die Standard-IMAP-Einstellungen anpassen - siehe http://stackoverflow.com/questions/3988583/problem-deleting-emails-in-gmail-using-imaplib –