Forum: PC-Programmierung Python imaplib UNSEEN gibt alle Mails aus.


von Jan S. (jannemann)


Lesenswert?

Hallo,
ich möchte unter Python alle ungelesenen Mails per IMAP von Gmail 
abrufen.
Mein Postfach sieht in etwa so aus:
https://cdn0.tnwcdn.com/wp-content/blogs.dir/1/files/2011/11/Screen-Shot-2011-11-01-at-9.07.19-AM.png
(z.B. 5 ungelesene Mails)

Beim Abrufen der Mails mit dem UNSEEN-Flag bekomme ich eine Liste, die 
wesentlich länger als 5 ist.
1
import imaplib
2
from pprint import pprint
3
4
imapObj = imaplib.IMAP4_SSL('imap.gmail.com')
5
imapObj.login('meineMailAdresse@gmail.com', 'MEIN_PASSWORT')
6
mailboxes = imapObj.list()
7
pprint(mailboxes)
8
9
imapObj.select('INBOX')
10
result, data = imapObj.uid('search', None, "UNSEEN")
11
print('Ungelesene Nachrichten:')
12
print(data)

Dazu erhalte ich folgende Ausgabe:
1
[b'(\\HasNoChildren) "/" "Arbeit"',
2
 b'(\\HasNoChildren) "/" "Belege"',
3
 b'(\\HasNoChildren) "/" "INBOX"',
4
 ....
5
 b'(\\HasNoChildren \\Important) "/" "[Gmail]/Wichtig"']
6
7
Ungelesene Nachrichten:
8
[b'300 301 303 307 309 310 ..... 450']

Meine Erwartung wäre gewesen, dass ich die Ausgabe
1
[b'446 447 448 449 450']
bekomme.

Laut Dokumentation, wird das SEEN-Flag automatisch gesetzt, wenn ich 
eine Mail im Browser öffne. Daher sollte meine Anzahl ungesesener 
Nachrichten doch wesentlich kleiner sein.

Was mache ich falsch? Habt ihr Tipps zum weiteren Vorgehen?
Ich habe mal eine der angeblich ungelesenen Mails geparsed, dort war ein 
Seen-Flag zu sehen.

Grüße und danke für hilfreiche Tipps!

von yesitsme (Gast)


Lesenswert?

Hab das zwar nie gegen Gmail getestet, aber habe ein None weniger im 
Aufruf:

imapObj.uid("SEARCH", "UNSEEN")

Vielleicht geht das.

von Jan S. (jannemann)


Lesenswert?

Danke für die Info,
Das 'None' weniger mache bei mir leider keinen Unterschied. Sämtliche 
Beispiele, die ich im Netz gefunden habe, haben diesen Aufbau.

Habe ich ein Verständnisproblem? Oder ist die Rückgabe tatsächlich 
"falsch"?
Ich werde das Script heute abend mal gegen einen anderen Provider 
testen.

yesitsme schrieb:
> imapObj.uid("SEARCH", "UNSEEN")
Bei dir geht es so? Mit welchem Provider?

Hat Jemand die Möglichkeit das Script ein weiteres mal bei Gmail zu 
testen und meine Rückgabe zu bestätigen? Das Beispiel lauffähig sein.

von Jan S. (jannemann)


Lesenswert?

Jan S. schrieb:
> Ich werde das Script heute abend mal gegen einen anderen Provider
> testen.

Ich habe das Script gerade erfolgreich mit einem anderen Provider 
getestet. Kann mir jemand helfen, wie ich das Problem bei gmail in Griff 
bekommen könnte? Meine Python-Kenntnisse sind leider nicht so gut, dass 
ich in den Modulen debuggen möchte (bzw. ich habe es noch nie gemacht).

Weiß jemand, ob ich das irgendwo als Bug melden kann/sollte?
Ist es überhaupt einer?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.