IMAPLIB ungelesene Mails filtern

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Rainier
User
Beiträge: 19
Registriert: Mittwoch 22. August 2007, 10:03

Hallo,

irgendwie stehe ich auf dem Schlauch und kann es auch nicht in der Doku finden.

Ich möchte gerne mein GMAIL-Account nach neuen Mails abfragen. Soweit klappt es auch, aber leider zeigt er mir auch die bereits gelesenen Mails an, die sich noch im Posteingangsordner befinden. Ich muss diese also immer in einen anderen Ordner verschieben. Was mache ich falsch?

Code: Alles auswählen

import imaplib

im = imaplib.IMAP4_SSL("imap.googlemail.com") 
im.login("benutzername", "passwort")
im.select("INBOX")
howmuch = int(im.search(None, 'UNSEEN')[1][0]) 
if howmuch > 0:
    print 'Sie haben %s ungelesene Mails' % howmuch
im.close()
im.logout()
Vielen Dank für die Hilfe

Rainier
Rainier
User
Beiträge: 19
Registriert: Mittwoch 22. August 2007, 10:03

Habe das Problem mittlerweile selber lösen können:

Mein Gedankenfehler war, dass bei im.search nicht die Anzahl der Mails sondern die ID-Nummern zurück gegeben werden. Ich brauchte einfach nur statt dem int ein len eingeben und schon klappt es. :oops:
svenXY
User
Beiträge: 27
Registriert: Dienstag 16. Juni 2009, 10:36
Kontaktdaten:

was auch immer Dir das ausgibt - bei mir gibt es die Länge des Strings aus, der zurückgegeben wird:

Code: Alles auswählen

$ python check_imap.py
'577 578'
Sie haben 7 ungelesene Mails
besser ist also

Code: Alles auswählen

import imaplib

im = imaplib.IMAP4_SSL("imap.server.com") 
im.login("username", "password")
im.select("INBOX")
mails = len(im.search(None, 'UNSEEN')[1][0].split(' '))

if mails:
    print 'Sie haben %d ungelesene Mails' % mails
    im.close()
    im.logout()

Antworten