18.1.7. email.encoders
: Encodeurs¶
Au moment de la création d’objets Message
à la main, il est souvent nécessaire d’encoder les charges utiles pour le transport à travers des serveurs mail conformes. C’est particulièrement vrai pour les messages de type image/* et text/* contenant des données binaires.
Le paquet email
fournit quelques encodeurs pratiques dans son module encoders
. Ces encodeurs sont d’ailleurs utilisés par les constructeurs des classes MIMEAudio
et MIMEImage
afin de fournir des encodages par défaut. Toutes les fonctions d’encodage prennent exactement un argument, l’objet message à encoder. Généralement, elles extraient la charge utile, l’encode, puis change la charge utile pour la nouvelle valeur encodée. Elles devraient également assigner l’en-tête Content-Transfer-Encoding si besoin.
À noter que ces fonctions n’ont pas de sens dans le cadre d’un message en plusieurs parties. Elles doivent à la place être appliquées aux sous-parties individuelles, et lèvent TypeError
si on leur passe un message en plusieurs parties.
Voici les fonctions d’encodages fournies :
-
email.encoders.
encode_quopri
(msg)¶ Encode la charge utile au format Quoted-Printable, et assigne
quoted-printable
1 à l’en-tête Content-Transfer-Encoding. C’est un bon encodage à utiliser quand la majorité de la charge utile contient essentiellement des données imprimables, à l’exceptions de quelques caractères.
-
email.encoders.
encode_base64
(msg)¶ Encode la charge utile au format base64, et assigne
base64
à l’en-tête Content-Transfer-Encoding. C’est un bon encodage à utiliser quand la majorité de la charge utile est non imprimable puisque c’est une forme plus compacte que quoted-printable.
-
email.encoders.
encode_7or8bit
(msg)¶ Ceci ne modifie pas effectivement la charge utile du message, mais va bien en revanche assigner la valeur
7bit
ou8bit
à l’en-tête Content-Transfer-Encoding selon la nature de la charge utile.
-
email.encoders.
encode_noop
(msg)¶ Ceci ne fait rien; et ne va même pas changer la valeur de l’en-tête Content-Transfer-Encoding.
Notes
- 1
À noter que l’encodage avec
encode_quopri()
encode également tous les caractères tabulation et espace.