email.iterators: Iteratoren

Quellcode: Lib/email/iterators.py


Die Iteration über einen Nachrichtenobjektbaum ist mit der Methode Message.walk recht einfach. Das Modul email.iterators bietet einige nützliche höherstufige Iterationen über Nachrichtenobjektbäume.

email.iterators.body_line_iterator(msg, decode=False)

Dies iteriert über alle Payloads in allen Unterteilen von msg und gibt die String-Payloads zeilenweise zurück. Es überspringt alle Unterteil-Header und alle Unterteile, deren Payload keine Python-Zeichenkette ist. Dies ist in gewissem Maße äquivalent zum Lesen der flachen Textdarstellung der Nachricht aus einer Datei mit readline(), wobei alle dazwischen liegenden Header übersprungen werden.

Das optionale Argument decode wird an Message.get_payload weitergegeben.

email.iterators.typed_subpart_iterator(msg, maintype='text', subtype=None)

Dies iteriert über alle Unterteile von msg und gibt nur die Unterteile zurück, die dem durch maintype und subtype angegebenen MIME-Typ entsprechen.

Beachten Sie, dass subtype optional ist; wenn es weggelassen wird, wird die Übereinstimmung des MIME-Typs des Unterteils nur mit dem Haupttyp durchgeführt. maintype ist ebenfalls optional; es ist standardmäßig text.

Daher gibt typed_subpart_iterator() standardmäßig jedes Unterteil zurück, das einen MIME-Typ von text/* hat.

Die folgende Funktion wurde als nützliches Debugging-Tool hinzugefügt. Sie sollte *nicht* als Teil der unterstützten öffentlichen Schnittstelle des Pakets betrachtet werden.

email.iterators._structure(msg, fp=None, level=0, include_default=False)

Gibt eine eingerückte Darstellung der Inhaltstypen der Nachrichtenobjektstruktur aus. Zum Beispiel

>>> msg = email.message_from_file(somefile)
>>> _structure(msg)
multipart/mixed
    text/plain
    text/plain
    multipart/digest
        message/rfc822
            text/plain
        message/rfc822
            text/plain
        message/rfc822
            text/plain
        message/rfc822
            text/plain
        message/rfc822
            text/plain
    text/plain

Das optionale Argument fp ist ein dateiähnliches Objekt, auf das die Ausgabe gedruckt werden soll. Es muss für die print()-Funktion von Python geeignet sein. level wird intern verwendet. include_default druckt, wenn es wahr ist, auch den Standardtyp.