Il package email fu in origine prototipato come libreria separata chiamata mimelib. Le modifiche sono state effettuate in modo che i nomi dei metodi fossero più efficaci ed alcuni metodi e moduli sono stati aggiunti o eliminati. Di alcuni metodi è stata cambiata la semantica. Per la maggior parte, tutte le funzionalità disponibili in mimelib sono tuttora disponibili nel package email, sebbene spesso in maniera diversa. La compatibilità all'indietro tra i package mimelib ed email non era una priorità.
Ecco una breve descrizione delle differenze tra i package mimelib ed email insieme ad alcuni suggerimenti sul porting delle vostre applicazioni.
Ovviamente la differenza più evidente tra i due package è il cambio del nome del package stesso in email. In aggiunta abbiamo le seguenti differenze nella parte più alta del package:
La classe Message presenta le seguenti differenze:
1
all'opzione decode del metodo
get_payload().
La classe Parser non ha differenze nell'interfaccia pubblica. Sono state aggiunte alcune peculiarità per riconoscere lo stato di consegna del messaggio, che viene rappresentato come un'istanza di Message che contiene sotto parti separate di Message per ognuno dei blocchi di intestazione nella notifica dello stato di consegna12.3.
La classe Generator non ha differenze nell'interfaccia pubblica. Abbiamo però una nuova classe nel modulo email.Generator, chiamata DecodedGenerator che fornisce la maggior parte delle funzionalità precedentemente disponibili nel metodo Message.getpayloadastext().
Sono stati modificati i seguenti moduli e classi:
Image
è stata/o rinominata/o
MIMEImage
. L'argomento _minor è stato rinominato
_subtype.
Text
è stata/o rinominata/o
MIMEText
. L'argomento _minor è stato rinominato
_subtype.
MessageRFC822
è stata/o rinominata/o
MIMEMessage
. Notare che una precedente versione di
mimelib chiamava questa classe/modulo
RFC822, ma questa/o, in presenza di alcuni file
system non sensibili alle differenze tra maiuscole e minuscole,
interferiva con il modulo rfc822 della libreria
standard di Python.
Inoltre la classe MIMEMessage adesso rappresenta tutti i tipi di messaggi MIME di tipo message. È necessario l'argomento facoltativo _subtype che si usa per impostare il sotto tipo MIME. Il valore _subtype è predefinito per rfc822.
mimelib forniva alcune utili funzioni nei moduli address e date. Tutte queste funzioni sono state spostate nel modulo email.Utils.
La classe/modulo MsgReader
è stata/o eliminata/o. La
funzionalità più simile viene supportata dalla funzione
body_line_iterator() nel modulo
email.Iterators.