2013-06-28 4 views
5

Hier und im Internet gibt es viele Beispiele, wie man eine Nachricht als SEEN markiert, obwohl dies bei imap automatisch geschieht. Wie kann ich eine E-Mail als UNSEEN oder UNREAD markieren?python imaplib - E-Mail als ungelesen oder ungesehen markieren

Ich habe ein Skript in Python, das UNSEEN Nachrichten empfängt, und es funktioniert super. Aber nachdem sie sie gelesen haben, markiert Imap sie automatisch als SEEN, was aber nur funktioniert, wenn das Skript keine Fehler hat, denn wenn es eine Ausnahme auslöst, möchte ich die E-Mail erneut als UNSEEN markieren, damit das Skript diese Nachricht das nächste Mal liest nochmal.

Wie kann ich das erreichen?

Ich habe auch mail.select(mail_label,readonly=True) verwendet, aber es hilft nicht, denn damit kann ich keine Nachricht als SEEN markieren, die ich auch brauche. Ich möchte auch, dass dies mit Google Mail funktioniert.

Antwort

5

Sie können ganz einfach deaktivieren Sie die \Seen Fahnen mit diesem Befehl:

tag UID STORE -FLAGS (\Seen) 

aber Ihre Software wird wahrscheinlich mehr robost sein, wenn Sie nur die \Seen Flagge an erster Stelle gesetzt, nachdem Sie eine Nachricht erfolgreich bearbeitet haben. Wenn während der Verarbeitung einer Nachricht ein Fehler auftritt (selbst wenn die Verbindung zum IMAP-Server unterbrochen ist), bleibt die Markierung deaktiviert und Sie können diese Nachricht beim nächsten Ausführen des Skripts erneut versuchen. Dazu meiden Sie die automatische Einstellung des Flags \Seen durch den IMAP-Server, indem Sie BODY.PEEK anstelle von BODY verwenden.

In Python, ich denke,, dass STORE Befehl sollte so ausgestellt werden, aber ich habe es nicht versucht.

connection.uid('STORE', '-FLAGS', '(\Seen)') 
+0

imaplib verwenden, PEEK, verwende ich: '.fetch (num" (BODY.PEEK [])) '. –

5

In Python, die imaplib Modul beschreibt STORE als:

(typ, [data]) = <instance>.store(message_set, command, flags) 

so die folgende Zeile wird Ihnen die Meldung auf READ ('+ FLAGS') oder ungelesen ('-flags') nach Bedarf.

connection.uid('STORE', MESSAGE_ID, '+FLAGS', '\SEEN') 

Wie Sie sehen, die Geheimnisse auf dem FLAGS-Befehl ist;)