E-mail en PHP – Accents dans les sujets

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. […] »

Gestionnaires de newsletters gratuits

En ligne:

MailChimp :
En ligne, très pratique et efficace – adopté !

Systèmes à installer :

Pommo :
(+) gère le « multipart » (text + html) ; complet ; interface assez réussie, plutôt agréable et intuitive ; gestion de templates ; multilingue
(-) pour créer et utiliser un template html complet (header compris), le wysiwyg doit être désactivé ; des erreurs dans la traduction française (contre-sens, termes inappropriés)

PHP List (v. 2.10.12) :
(+) « multipart » ; succès de cet outil, très répandu (mais personnellement je ne l’apprécie pas) ; complet
(-) « bridé » (on ne peut pas personnaliser le <header> d’un template html)

phpMyNewsletter (v. 0.8b5) :
(+) « multipart »
(-) « bridé » (pas d’accès au <header> d’un message ou du template html) ; pas de wysiwyg

Plugin(s) WordPress : MailPress : Excellent
(+) « multipart » ; très complet
(-) trop complet ? (on peut s’y perdre un peu, tous les plugins Mailpress n’ont pas forcément besoin d’être tous activés, système complexe donc risque de bug non négligeable)

Autres gestionnaires :

Tellmatic
NewsletTux
Wanesletter

voir aussi sur opensourcescripts.com

Clients e-mails à tester :

Mac : Thunderbird, Apple Mail
Win : Thunderbird, Outlook, Outlook Express, Windows Live Mail
Webmails : GMail, Hotmail, Yahoo.fr, Laposte.net, gmx.fr, Roundcube, Squirrelmail, Horde, atmail, Hastymail, Ilohamail…

Divers

un forum sur les newsletters