Analysieren Gmail mit Python und markieren Sie alle älter sind als das Datum als "Lesen"
Lange Geschichte kurz, ich habe eine neue gmail-account ein, und verknüpft mehrere andere accounts zu haben (jeder mit 1000 Nachrichten), die ich importieren. Alle importierten Nachrichten als ungelesen, aber ich brauche Sie, um zu scheinen, als zu Lesen.
Ich habe ein wenig Erfahrung mit python, aber ich habe nur die verwendete E-mail-und imaplib Module für das senden von E-mail, nicht die Verarbeitung Konten.
Gibt es eine Möglichkeit, bulk-Prozess werden alle Elemente im Posteingang, und dann markieren Sie Nachrichten, die älter als ein bestimmtes Datum als gelesen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist eine leichte Modifikation des Codes in der imaplib doc Seite für die store-Methode. Ich fand die Suche nach Kriterien für die Verwendung von RFC 3501. Dies sollte Ihnen den Einstieg.
Basierend auf Philip T. s Antwort oben und RFC 3501 und RFC-2822, baute ich einige code-Zeilen zu markieren, mails die älter als 10 Tage so gelesen. Eine statische Liste, die verwendet wird, für den abgekürzten Monatsnamen. Dies ist nicht besonders elegant, aber Python ' s %b format-string ist von der locale abhängig, wodurch unangenehme überraschungen. Alle IMAP-Befehle UID basiert.
Übrigens: ich weiß nicht, warum "-" verwendet werden musste, wie ein Datums-Trennzeichen in den string Suche in meinem Fall (dovecot-IMAP-server). Mir scheint dem zu widersprechen, RFC 2822. Jedoch, Daten mit einfachen Leerzeichen als Trennzeichen nur zurückgegeben, IMAP-Fehler.
Anstatt zu versuchen, zu analysieren, unsere HTML-warum nicht einfach die IMAP-Schnittstelle? Es Haken bis zu einem standard-mail-client und dann einfach nach Datum Sortieren und markieren, je nachdem, was diejenigen, die Sie wollen, als zu Lesen.
Gehen Sie einfach auf die Gmail-web-interface, führen Sie eine erweiterte Suche nach Datum, dann alle markieren und als gelesen markieren.