Questo modulo definisce un certo numero di classi che permettono un facile ed uniforme accesso ai messaggi di posta in una mailbox (di tipo Unix).
| fp[, factory]) |
Per una maggiore portabilit�, i messaggi in una mailbox in stile
Unix vengono separati da una riga che inizia esattamente con la
stringa 'From ' (notare lo spazio finale) se preceduta da
esattamente due fine riga. A causa per� delle numerose variazioni
esistenti rispetto a questa organizzazione, non si dovrebbe
considerare nient'altro che la riga From_. Comunque,
l'implementazione corrente non si preoccupa della mancanza dei due
fine riga. Il che va bene per molte applicazioni.
La classe UnixMailbox si comporta in modo pi� rigido riguardo
alla separazione dei vari messaggi, in quanto usa un'espressione
regolare che di solito riconosce correttamente i delimitatori
From_. Essa considera che le separazioni siano in base a righe
del tipo "From name time". Per una maggiore
portabilit� � meglio per� usare la classe PortableUnixMailbox.
È identica a UnixMailbox, tranne per il fatto che i singoli
messaggi vengono considerati separati da righe "From " e non
"From name time".
Per altre informazioni, vedere Unix: Unix: Why the Content-Length Format is Bad" >Configuring Netscape Mail on Unix: Why the Content-Length Format is Bad.
| fp[, factory]) |
'From ', che vengono evidenziate dai software di gestione della
posta al momento del trasporto.
| fp[, factory]) |
| dirname[, factory]) |
| dirname[, factory]) |
| fp[, factory]) |
EOOH (End-Of-Original-Headers), mentre le intestazioni visibili
si trovano dopo. I gestori di mailbox compatibili con Babyl
mostreranno solamente le intestazioni visibili, e gli oggetti
BabylMailbox restituiranno i messaggi con solo questo tipo di
intestazioni. Per poter avere anche le intestazioni originali �
necessario analizzare la mailbox ``da soli''. I messaggi iniziano con
la linea EOOH e terminano con una riga contenente i caratteri
'\037\014'. Il parametro factory � analogo a
quello della classe UnixMailbox.
Dato che il modulo rfc822 � deprecato, si raccomanda l'uso del modulo email per creare gli oggetti messaggio da una mailbox (il modulo rfc822 non pu� essere eliminato per questioni di compatibilit�). Un modo molto sicuro per fare ci� � il seguente:
import email
import email.Errors
import mailbox
def msgfactory(fp):
try:
return email.message_from_file(fp)
except email.Errors.MessageParseError:
# Non fatevi restituire None, perch�
# si fermerebbe l'iteratore della mailbox
return ''
mbox = mailbox.UnixMailbox(fp, msgfactory)
Il codice precedente � difensivo rispetto alla struttura della mailbox, in quanto si � preparati a ricevere un'eventuale stringa vuota dal metodo next() della mailbox. Comunque, se si � sicuri che la mailbox � perfettamente standard, � possibile semplificare il codice:
import email import mailbox mbox = mailbox.UnixMailbox(fp, email.message_from_file)
Vedete anche: