email.iterators: Iteratorer

Källkod: Lib/email/iterators.py


Att iterera över ett meddelandeobjektträd är ganska enkelt med metoden Message.walk. Modulen email.iterators ger några användbara iterationer på högre nivå över träd med meddelandeobjekt.

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

Detta itererar över alla nyttoladdningar i alla underdelar av msg och returnerar strängnyttoladdningarna rad för rad. Den hoppar över alla underavdelningsrubriker och den hoppar över alla underavdelningar med en nyttolast som inte är en Python-sträng. Detta motsvarar i viss mån att läsa den platta textrepresentationen av meddelandet från en fil med readline(), och hoppa över alla mellanliggande rubriker.

Valfri decode skickas vidare till Message.get_payload.

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

Detta itererar över alla underdelar av msg och returnerar endast de underdelar som matchar den MIME-typ som anges av maintype och subtype.

Observera att subtype är valfri; om den utelämnas görs matchning av MIME-typer för underdelar endast med huvudtypen. maintype är också valfritt; standardvärdet är text.

Som standard returnerar alltså typed_subpart_iterator() varje underavsnitt som har MIME-typen text/*.

Följande funktion har lagts till som ett användbart felsökningsverktyg. Den ska inte betraktas som en del av det offentliga gränssnitt som stöds för paketet.

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

Skriver ut en indragen representation av innehållstyperna i meddelandeobjektstrukturen. Till exempel

>>> 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

Valfritt fp är ett filliknande objekt att skriva ut utdata till. Det måste vara lämpligt för Pythons funktion print(). level används internt. include_default, om true, skriver ut standardtypen också.