Questo modulo definisce una classe, Message, che rappresenta un ``messaggio di posta elettronica,'' così come definito dallo standard Internet RFC 2822.12.5Tali messaggi si compongono di una collezione di intestazioni di messaggio e di un corpo del messaggio. Questo modulo definisce inoltre una classe helper, AddressList, per l'analisi di indirizzi RFC 2822. Far riferimento alla RFC per informazioni sulla sintassi specifica dei messaggi RFC 2822.
Il modulo mailbox fornisce classi per leggere le caselle di posta prodotte da vari programmi di gestione di posta elettronica.
file[, seekable]) |
Questa classe può trattare ogni oggetto di input che supporti un metodo readline(). Se l'oggetto di input possiede le funzionalità seek e tell, sarà attivo anche il metodo rewindbody(); altrimenti, righe non conformi verranno respinte indietro nel flusso di input. Se l'oggetto di input non possiede la funzionalità seek ma possiede un metodo unread() che può respingere indietro una riga di input, Message lo utilizzerà per respingere indietro le righe non conformi. Quindi questa classe può essere utilizzata per analizzare messaggi provenienti da un flusso bufferizzato.
L'argomento facoltativo seekable viene fornito come rimedio per certe librerie stdio nelle quali tell() elimina i dati bufferizzati prima di scoprire che la chiamata di sistema lseek() non funziona. Per la massima portabilità, dovreste impostare l'argomento seekable a zero, per evitare la chiamata iniziale a tell() quando viene passato in input un oggetto unseekable come ad esempio un oggetto file creato da un oggetto socket.
Le righe di input, così come lette dal file, possono essere sia terminate dalla coppia CR-LF che da un singolo linefeed; una terminazione CR-LF viene sostituita da un singolo linefeed prima di memorizzare la riga.
Il controllo di corrispondenza dell'intestazione viene svolto in
modalità non sensibile a maiuscole o minuscole; ad esempio
m['From']
, m['from']
e
m['FROM']
conducono tutti allo stesso risultato.
field) |
None
produce
una lista vuota.
str) |
str) |
address) |
(None, None)
.
pair) |
(realname, email_address)
e
restituisce il valore stringa adatto per un header To: o
Cc:. Se il primo elemento della coppia, pair, è
falso, allora il secondo elemento viene restituito invariato.
date) |
'Mon, 20 Nov 1995 19:12:08 -0500'
. Se l'analisi ha successo,
parsedate() restituisce una tupla di nove elementi che può
essere passata direttamente a time.mktime(); altrimenti
verrà restituito None
. Notate che i campi 6, 7 e 8 della tupla
risultante non sono utilizzabili.
date) |
None
o una tupla di dieci elementi; i primi nove elementi
costituiscono una tupla che può essere passata direttamente a
time.mktime(), ed il decimo è lo scostamento di fuso orario
della data UTC (che è la dicitura ufficiale per il Greenwich Mean
Time). Notare che il segno che indica lo scostamento di fuso orario è
l'opposto del segno della variabile time.timezone
per lo stesso
fuso orario; quest'ultima variabile segue lo standard POSIX mentre
questo modulo segue l'RFC 2822. Se la stringa in input non
specifica il fuso orario, l'ultimo elemento della tupla restituita
avrà il valore None
. Notare che i campi 6, 7 e 8 della tupla
risultante non sono utilizzabili.
tuple) |
None
, si assume l'ora locale. Mancanza
minore: questa funzione comincia con l'interpretare i primi 8 elementi
come ora locale e quindi compensa tenendo conto della differenza di
fuso orario; questo potrebbe portare ad un minimo errore sulle date di
passaggio all'ora legale, comunque non tale da preoccupare per i
comuni utilizzi.
Vedete anche: