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 ou 8bit à 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.