Python TagebuchPython lernen – mein persönliches Tagebuch

Tagebuch-Eintrag #37
Projekt-Idee: PDF aus Email drucken – Schritt #1.1

Viele Tutorials gelesen um die Projektidee zu verwirklichen. Sehr komplex das Ganze für mich.
Werbung/Anzeige

Ich habe mittlerweile verschiedene Tutorials gefunden und gelesen. Es gibt verschiedene Ansätze das umzusetzen.

Jetzt verwende ich einen anderen Code um die Emails vom IMAP-Server zu finden. Dazu kann ich direkt beim Suchen nach Emails die Bedingungen festlegen, so dass ich nicht mehr später separat nach dem richtigen Betreff suchen muss.

Das Suchkriterium lege ich direkt im imaplib-Modul fest. Genauer gesagt imaplib.search die Anweisung dazu in der offiziellen Dokumentation lautet:

IMAP4.search(charset, criterion[, ...])
# Example: M is a connected IMAP4 instance...
typ, msgnums = M.search(None, 'FROM', '"LDJ"')

An der zweiten Stelle kommt also die Kriterien, die erfüllt werden müssen, damit die Email erfasst wird. Meine repräsentativer Code für diese Zeile sieht nun wie folgt aus:

result, data = server.search("UTF-8", 'UNSEEN FROM "ABSENDER@DOMAIN.DE" SUBJECT "drucken"')

In der Dokumentation habe ich noch nichts gefunden warum zwei Werte zurückgegeben werden: typ, msgnums (aus dem ofiziellen Beispiel) bzw. result, data (aus meinem Code).

Ich denke, das zu wissen, würde vielleicht etwas helfen.

Etwas durcheinander und chaotisch

Ich habe zwar wie angedeutet geschafft mich auf dem IMAP-Server einzuloggen und die Emails mit den passenden Kriterien anzuzeigen. Doch fehlen noch weitere wichtig Funktion.

Denn aktuell wird die komplette Email samt PDF-Anhang (codiert) angezeigt. Doch brauche ich nur den Betreff. Diesen muss ich also noch irgendwie aus den ganzen extrahieren.

Mein Kopf ist bisschen durcheinander von all den verschiedenen Tutorials und Module. Ich werde mich mal etwas sammeln und sortieren. Ich werde erstmal festhalten welche Python-Module ich genau benötige und mich damit genauer befassen.

Python-Module die ich benötige

Die Module, die ich mindestes für diese Aufgabe benötige sind:

  • imaplib – um Verbindung mit dem IMAP-Server herzustellen und Emails zu suchen
  • email – um die gefundenen Emails im Detail auszulesen, z.B: Header, Body, Attachments und um Emails zu senden.

Der aktuell Pyhton-Code für dieses Pyhton-Projekt:

def check_inbox(host, port, user, password):
    try:
        server = imaplib.IMAP4_SSL(host, port)
        server.login(user, password)
        print("Erfolgreich eingeloggt!")
    except:
        print("Fehler")
        return -1
    # Hier beginnt die Suche nach den passenden Emails    
    server.select("Inbox")
    result, data = server.search("UTF-8", 'UNSEEN FROM "ABSENDER@DOMAIN.DE" SUBJECT "drucken"')
    mails = data[0].split()    
    for mail in mails:
        result, data = server.fetch(mail, '(RFC822)')        
        print("E-Mail mit Anhang gefunden: ", mail)
        print("-----" * 4)
        print(data[0][1])
        print("-----" * 4)
            
    # Close & Logout
    server.close()
    server.logout()

# check_inbox("HOST", "PORT", "USER", "PASS")
# # ## ENDE Tagebuch-Eintrag #37 | Projekt-Idee: PDF aus Email drucken – Schritt #1.1
Werbung/Anzeige
Schlagwörter im Tagebuch-Eintrag:

Kommentar schreiben




Werbung/Anzeige