4 Stimmen

Zählen der Anzahl von Nachrichten in einem E-Mail-Konto mit Python

Gibt es eine Möglichkeit, in Python, auf ein E-Mail-Konto zuzugreifen (Ich benötige dies für Gmail, aber es wäre besser, wenn es für jedes funktioniert) und die Anzahl der Nachrichten im Posteingang zu sehen (vielleicht sogar nur ungelesene Nachrichten)? Danke.

6voto

Avadhesh Punkte 4329

Sie können dies ausprobieren

import imaplib  
obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)  
obj.login('Benutzername', 'Passwort')  
obj.select('Posteingang')      <-- es wird die Gesamtzahl der E-Mails im Posteingang zurückgeben 
('OK', ['50'])  
obj.search(None,'UnSeen')  <-- es wird eine Liste der UIDs für ungelesene E-Mails zurückgeben

4voto

ʇsәɹoɈ Punkte 21105

Werfen Sie einen Blick auf die POP3- und IMAP-Pakete der Python-Standardbibliothek POP3 und IMAP.

4voto

Basierend auf Avadheshs Antwort:

#! /usr/bin/env python3.4

import getpass
import imaplib

mail = imaplib.IMAP4_SSL('imap.server.com')
mypassword = getpass.getpass("Passwort: ")
adresse = 'deine@email.com'
mail.login(adresse, mypassword)
mail.select("Posteingang")
print("Überprüfung neuer E-Mails für ",adresse,".", sep='')
typ, messageIDs = mail.search(None, "UNGELESEN")
messageIDsString = str( messageIDs[0], encoding='utf8' )
listOfSplitStrings = messageIDsString.split(" ")
if len(listOfSplitStrings) == 0:
    print("Sie haben keine neuen E-Mails.")
elif len(listOfSplitStrings) == 1:
    print("Sie haben",len(listOfSplitStrings),"neue E-Mail.")
else:
    print("Sie haben",len(listOfSplitStrings),"neue E-Mails.")

1voto

fitzgeraldsteele Punkte 4537

Eine alternative Gmail-spezifische Lösung zum Finden ungelesener Nachrichten:

Gmail bietet Atom-Feeds für Nachrichten an. Zum Beispiel:

https://mail.google.com/mail/feed/atom/ (ungelesene Nachrichten im Posteingang) http://mail.google.com/mail/feed/atom/labelname/ (ungelesene Nachrichten im Labelname) http://mail.google.com/mail/feed/atom/unread/ (alle ungelesenen Nachrichten)

Daher könnten Sie die ausgezeichnete feedparser Bibliothek verwenden, um den Feed abzurufen und die Einträge zu zählen.

Jetzt, wo ich darauf schaue, scheint es jedoch, dass der Feed für ungelesene Nachrichten nur bis zu 20 Einträge zurückgibt, so dass dies möglicherweise etwas begrenzt ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X