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.
Antworten
Zu viele Anzeigen?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
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.")
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.