12.2.2.1 API per la classe Parser

class Parser( [_class[, strict]])
Il costruttore per la classe Parser riceve un argomento facoltativo _class. Questo deve essere interno al costruttore e chiamabile (come una funzione o una classe) e viene utilizzato quando l'oggetto sotto messaggio deve essere creato. Il valore predefinito è Message (vedere email.Message). La funzionalità interna verrà chiamata senza argomenti.

L'opzione facoltativa strict specifica se dovrà essere effettuata un'analisi rigorosa o lasca. Normalmente, quando cose come i limiti di MIME mancano o quando i messaggi hanno problemi di formattazione, Parser solleva un'eccezione MessageParseError. Comunque, quando viene abilitata l'analisi lasca, Parser prova a lavorare su questi errori di formattazione per generare una struttura del messaggio utilizzabile (questo non significa che MessageParseError non verrà mai sollevata; alcuni messaggi formattati male non possono semplicemente essere analizzati). Il valore predefinito dell'opzione strict è False, poichè l'analisi lasca fornisce generalmente un comportamento più conveniente.

Modificato nella versione 2.2.2: È stata aggiunta l'opzione strict.

Gli altri metodi pubblici di Parser sono:

parse( fp[, headersonly])
Legge tutti i dati dall'oggetto di tipo file fp, analizza il testo risultante e restituisce l'oggetto principale del messaggio. fp deve supportare i metodi readline() e read() sugli oggetti simile a file.

Il testo contenuto in fp deve essere formattato come un blocco di intestazioni in stile RFC 2822 e righe di continuazione delle intestazioni, facoltativamente precedute da un'intestazione della busta. Il blocco delle intestazioni viene terminato dalla fine dei dati o da una riga vuota. A seguire il blocco delle intestazioni c'è il corpo del messaggio (che può contenere sotto parti codificate come MIME).

L'opzione facoltativa headersonly è come con il metodo parse().

Modificato nella versione 2.2.2: È stata aggiunta l'opzione headersonly.

parsestr( text[, headersonly])
Simile al metodo parse(), ad eccezione che riceve un oggetto stringa invece che un oggetto simile a file. Chiamare questo metodo su una stringa è esattamente equivalente ad incapsulare text in un'istanza StringIO prima e chiamare parse().

L'opzione facoltativa headersonly specifica se interrompere l'analisi dopo la lettura delle intestazioni o no. Il valore predefinito è False, a significare che analizzerà l'intero contenuto del file.

Modificato nella versione 2.2.2: È stata aggiunta l'opzione headersonly.

Poiché la realizzazione di una struttura di un oggetto di tipo messaggio da una stringa o da un file è una cosa molto comune, vengono fornite, per convenienza, due funzioni. Sono disponibili nello spazio dei nomi di livello più alto del package email.

message_from_string( s[, _class[, strict]])
Restituisce un oggetto struttura del messaggio da una stringa. Questo è esattamente equivalente a Parser().parsestr(s). Gli argomenti facoltativi _class e strict vengono interpretati come nel costruttore della classe Parser.

Modificato nella versione 2.2.2: È stata aggiunta l'opzione strict.

message_from_file( fp[, _class[, strict]])
Restituisce una struttura ad albero di oggetti messaggio da un oggetto file aperto. Questo è esattamente equivalente a Parser().parse(fp). Gli argomenti facoltativi _class e strict vengono interpretati come nel costruttore della classe Parser.

Modificato nella versione 2.2.2: È stata aggiunta l'opzione strict.

Ecco un esempio di come si può utilizzare questo in una sessione interattiva di Python:

>>> import email
>>> msg = email.message_from_string(myString)

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