Jeux de caractères

Encodage

Par défaut, le corps des messages textes et HTML est encodé via le mécanisme "quoted-printable". Les en-têtes du message sont aussi encodés avec le mécanisme "quoted-printable" si vous ne spécifiez pas base64 avec setHeaderEncoding(). Si vous utilisez une langue qui n'est pas sur des lettres de type romaines, la base64 sera plus convenable. Tous les fichiers joints sont encodés via base64 si aucun autre encodage n'est spécifié lors de l'appel à addAttachment() ou assigné plus tard à la partie MIME de l'objet. Les encodages 7Bit et 8Bit ne se font pour l'instant que sur les données binaires.

L'encodage des en-têtes, spécialement l'encodage du sujet, est toujours délicat. Zend_Mime implémente actuellement son propre algorithme pour encoder les en-têtes "quoted-printable" suivant la RFC-2045. Ceci est du à un problème des fonctions iconv_mime_encode et mb_encode_mimeheader avec certaines tables de caractères. Cet algorithme ne coupe les en-têtes qu'au niveau des espaces, ce qui peut entraîner des problèmes quand la longueur excède la longueur de 76 caractères. Dans ce cas, il est suggéré de basculer en encodage BASE64 pour les en-têtes comme décrit dans les exemples suivants :

  1. // Par défaut Zend_Mime::ENCODING_QUOTEDPRINTABLE
  2. $mail = new Zend_Mail('KOI8-R');
  3.  
  4. // Bascule en encodage Base64 parce que le Russe exprimé en KOI8-R est
  5. // considérablement différent des langues basées sur des lettres romaines
  6. $mail->setHeaderEncoding(Zend_Mime::ENCODING_BASE64);

Zend_Mail_Transport_Smtp encode les lignes commençant par un ou deux points, ainsi l'émail ne viole pas le protocole SMTP.


Jeux de caractères