12.2.10 Iteratori

Iterare su un albero di oggetti message è abbastanza semplice con il metodo Message.walk(). Il modulo email.Iterators fornisce alcune iterazioni di alto livello utili per gli alberi di oggetti message.

body_line_iterator( msg[, decode])
Questo itera su tutto il carico utile in tutte le sotto parti di msg, restituendo la stringa di carico utile riga per riga. Salta tutte le intestazioni delle sotto parti e salta tutte le sotto parti che non sono stringhe Python. Questo è qualcosa di equivalente che leggere la rappresentazione testuale del messaggio da un file, utilizzando readline(), saltando tutte le intestazioni.

Il parametro facoltativo decode viene passato tramite Message.get_payload().

typed_subpart_iterator( msg[, maintype[, subtype]])
Questo itera su tutte le sotto parti di msg, restituendo solo quelle sotto parti che corrispondono al tipo MIME specificato da maintype e subtype.

Notare che subtype è facoltativo; se omesso, la corrispondenza del tipo MIME viene fatta solo considerando il tipo principale. maintype è anch'esso facoltativo; il valore predefinito è text.

Perciò, il comportamento predefinito di typed_subpart_iterator() è quello di restituire tutte le parti che sono di tipo MIME text/*.

Le seguenti funzioni sono state aggiunte come un utile strumento di debug. Non devono essere considerate parte dell'interfaccia pubblica supportata dal package.

_structure( msg[, fp[, level]])
Stampa una rappresentazione indentata dei tipi contenuti nella struttura dell'oggetto messaggio. Ad esempio:

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

Il parametro facoltativo fp è un oggetto simile a file dove stampare l'output. Deve soddisfare le istruzioni estese di stampa di Python. level viene usato internamente.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.