Problème : Transmettre les accents dans les sujets d’e-mail via la fonction mail() de PHP.
Une solution apparemment efficace ici : http://pilgrim.maleo.net/2008/02/fonction-mail-envoyer-un-sujet-avec-des-accents
Extrait :
[…]
// Message $recipient = 'you@example.com'; $subject = '=?UTF-8?B?'.base64_encode('Sujet : éèàïî').'?='; $sender = '"=?UTF-8?B?'.base64_encode('Nom : éèàïî').'?=" <me@example.com>'; $body = 'Corps du message avec des accents aussi : éèàïî'; // Entêtes du message $headers = array(); $headers[] = 'From: '.$sender; $headers[] = 'Content-Type: text/plain; charset=UTF-8; format=flowed;'; $headers[] = 'MIME-Version: 1.0'; $headers[] = 'Content-Transfer-Encoding: 8bit'; $headers = join("\n", $headers); // Envoi du mail mail($recipient, $subject, $body, $headers);« Ce code utilise l’UTF-8, c’est l’encodage par défaut de tout mon code en général que ca soit pour les fichiers, la base de données ou le « Content-Type » envoyé au navigateur. L’UTF-8 permet de faire des applications qui acceptent et utilisent n’importe quel caractère de n’importe quelle langue et sera en plus l’encodage par défaut pour le PHP6 à venir ce qui est une bonne chose.
Bien sûr, il faut mettre dans dans une fonction pour une meilleure factorisation, si je laisse ce code tel quel, c’est pour mieux en comprendre le mécanisme. Une visite de la documentation de la fonction mail() et des commentaires associés apportent de meilleures solutions. On y voit par exemple l’utilisation d’un code tel que celui-ci :
$subject= mb_encode_mimeheader($subject,"UTF-8", "B", "\n");Je n’ai pas poussé mes investigations plus loin à ce niveau mais la lecture de la documentation de la fonction mb_encode_mimeheader() ne pourrait être que bénéfique. […] »