Version complète: sur le forum Webmaster Hub : Page en UTF-8 en fonction mail PHP
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
dldstyle
Je me suis converti depuis peu au charset en utf-8 que je trouve plus pratique dans mes pages.

Je me heurte aujourd'hui à un problème sur les caractères accentués qui sont en hiéroglyphes dans le contenu des mails envoyés avec la fonction mail de PHP (ex : Céline Dupond).

Comment pallier à ce problème ?

Merci smile.gif
Dadou
Converti en iso 8859-1, pas mal de clients de messagerie gèrent mal l'utf-8, c'est le cas d'outlook notamment, ainsi que pas mal de webmail.

Moi aussi, au départ quand j'ai découvert l'utf-8 j'ai voulu envoyer mes mails dans ce format, et j'ai eu quelques surprises.
rdd
Salut,

La fonction utf8_encode() est ton amie wink.gif

Si le corps de ton mail est dans une variable $body_mail, il te suffit de faire un utf8_encode($body_mail) et le tour est joue.
dldstyle
Salut,

Je pense que la fonction utf8_decode serait la mieux appropriée mais ce n'est pas le cas. J'ai tout de même testé le utf8_encode mais ça ne fait qu'empirer les choses unsure.gif

Tu pensais à une autre possibilité Dadou ?
Dadou
utf8_decode est en effet la fonction à utiliser, mais encore faut il que le mail généré soit déclaré en iso 8859-1 dans ses entêtes
rdd
Autant pour moi, en effet utf8_decode pour la fonction.

Comme le dis Dadou, les headers du mail doivent etre en iso 8859-1
dldstyle
Il me semble que tout est bon mais pourtant... Peut être ai je le nez trop collé à mon écran ?!
CODE
$sujet='Demande de contact depuis votre site';
$headers = 'From: contact_AT_site.fr' . "\r\n";
$headers .= 'Reply-To: ' .$email. "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$message="
Civilite : ".$civ."<br />
Nom : ".$nom."<br />
Message : ".nl2br($commentaire);
mail(_EXP_MAIL_, $sujet, $message, $headers);

Merci pour votre aide
Dadou
Essaie comme ça :

CODE
$sujet='Demande de contact depuis votre site';
$headers = 'From: contact_AT_site.fr' . "\r\n";
$headers .= 'Reply-To: ' .$email. "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$message="
Civilite : ".utf8-decode($civ)."<br />
Nom : ".utf8-decode($nom)."<br />
Message : ".nl2br(utf8-decode($commentaire));
mail(_EXP_MAIL_, $sujet, $message, $headers);

dldstyle
Merci de ton aide Dadou mais ça ne marche pas mieux (j'ai remplacé dans ton code utf8-decode par utf8_decode)... sad.gif
dldstyle
Après avoir trituré le code j'ai réussi à le faire fonctionner. Je pense que l'ordre du charset dans le header à son importance.
Le code si cela peut aider d'autres personnes pour envoyer des emails avec la fonction mail de PHP depuis une page en UTF-8 :

CODE
         $sujet='Demande de contact depuis votre site';
         $headers  = 'MIME-Version: 1.0' . "\r\n";
         $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
         $headers .= 'From: '._EXP_MAIL_. "\r\n";
         $headers .= 'Reply-To: ' .$email. "\r\n";
         $headers .= 'Reply-To: ' .$email. "\r\n";

         $message="
         Civilite : ".$civ."

         Nom : ".utf8_decode($nom)."

         Tel. : ".$telephone."

         Email : ".$email."

         Ville : ".utf8_decode($ville)."

         Message : ".nl2br(utf8_decode($commentaire));
         mail(_EXP_MAIL_, $sujet, $message, $headers);


Merci pour l'aide.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.