Hallo,
diesmal habe ich mal eine Frage zur IMAP libary (imaplib).
Ich habe ein kleines Script verfasst, in welchem ich den Posteingang nach Mails von einer bestimmten Adresse mit einem bestimmten Betreff und einem bestimmten Text durchsuche.
Dazu kenn ich die Funktion .search unter imaplib.
Das funktioniert auch an sich gut, doch wenn man nach dem Betreff "Beispiel1" sucht und dem Text "Beispiel2" such, dann werden nicht nur Treffer gefunden, welche den Betreff "Beispiel1" und den Text "Beispiel2" haben, sondern auch welche, welche "Beispiel1" im Betreff haben und/oder "Beispiel2" im Text haben. Das bedeutet es werden auch Treffer angezeigt, welche beispielsweise "xBesipiel1" als Betreff haben.
Kann man das irgendwie verhindern oder gibt es eventuell eine andere Funktion unter imaplib zum 'spezifischen' suchen?
Danke schonmal
Python imaplib Betreff/Text Suche
Hi,
ich denke wenn du es präziser haben willst, wirst du es wohl ohne re ( regular expression ) modul nicht schaffen.
Vll. eine schleife machen die alle Emails durchläuft und den Betreff durchsucht, denke aber daran das die Betreff information mit base64
kodiert sein kann.
Die funktion ist sehr hilfreich: email.Header.decode_header()
ich denke wenn du es präziser haben willst, wirst du es wohl ohne re ( regular expression ) modul nicht schaffen.
Vll. eine schleife machen die alle Emails durchläuft und den Betreff durchsucht, denke aber daran das die Betreff information mit base64
kodiert sein kann.
Die funktion ist sehr hilfreich: email.Header.decode_header()
Code: Alles auswählen
Decode a message header value without converting the character set. The header value is in header.
This function returns a list of (decoded_string, charset) pairs containing each of the decoded parts of the header. charset is None for non-encoded parts of the header, otherwise a lower case string containing the name of the character set specified in the encoded string.
Schonmal vielen Danke für die schnelle Antowrt
Die Idee hatte ich auch schon (zumindest ansatzweise).
Das einzige, was mich zum zögern gebracht hat war, dass ich so jede einzelne Mail öffnen muss (natülich in einer Schleife!), den Header auslesen muss, auswerten muss...
Dabei wird jede dieser Mail als gelesen markiert (oder nicht?) und das sah ich als Problem, da das Script für den Benutzer nicht bemerkbar sein soll, es sei denn es kommt eine bestimmte Mail (von einer bestimmten Adresse, mit einem bestimmten Betreff/Text) an. So müsste man dann jede Mail wieder als ungelesen markieren. Das finde ich sehr unschön, aber falls es keine andere Lösung gibt, muss ich wohl darauf zurückgreifen.
Oder verstehe ich deinen Lösungsansatz falsch?
Gruß py4fun
Die Idee hatte ich auch schon (zumindest ansatzweise).
Das einzige, was mich zum zögern gebracht hat war, dass ich so jede einzelne Mail öffnen muss (natülich in einer Schleife!), den Header auslesen muss, auswerten muss...
Dabei wird jede dieser Mail als gelesen markiert (oder nicht?) und das sah ich als Problem, da das Script für den Benutzer nicht bemerkbar sein soll, es sei denn es kommt eine bestimmte Mail (von einer bestimmten Adresse, mit einem bestimmten Betreff/Text) an. So müsste man dann jede Mail wieder als ungelesen markieren. Das finde ich sehr unschön, aber falls es keine andere Lösung gibt, muss ich wohl darauf zurückgreifen.
Oder verstehe ich deinen Lösungsansatz falsch?
Gruß py4fun
@py4fun: Du kannst den Ordner auch „read-only” verwenden, dann werden die Mails nicht als gelesen markiert.
Hallo Blackjack,
meinst du das?
Man, was du alles weißt...
Die Info ist sehr nützlich gewesen.
meinst du das?
Code: Alles auswählen
IMAP4.select([mailbox[, readonly]])
Select a mailbox. Returned data is the count of messages in mailbox (EXISTS response). The default mailbox is 'INBOX'. If the readonly flag is set, modifications to the mailbox are not allowed.
Die Info ist sehr nützlich gewesen.