Seite 1 von 1

IMAPLIB ungelesene Mails filtern

Verfasst: Dienstag 12. Oktober 2010, 12:07
von Rainier
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

Re: IMAPLIB ungelesene Mails filtern

Verfasst: Dienstag 12. Oktober 2010, 15:06
von Rainier
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:

Re: IMAPLIB ungelesene Mails filtern

Verfasst: Donnerstag 24. Februar 2011, 12:11
von svenXY
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()