dldstyle Posté 4 Novembre 2008 Posté 4 Novembre 2008 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
Dadou Posté 4 Novembre 2008 Posté 4 Novembre 2008 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 Posté 4 Novembre 2008 Posté 4 Novembre 2008 Salut, La fonction utf8_encode() est ton amie 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 Posté 4 Novembre 2008 Auteur Posté 4 Novembre 2008 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 Tu pensais à une autre possibilité Dadou ?
Dadou Posté 4 Novembre 2008 Posté 4 Novembre 2008 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 Posté 4 Novembre 2008 Posté 4 Novembre 2008 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 Posté 4 Novembre 2008 Auteur Posté 4 Novembre 2008 (modifié) Il me semble que tout est bon mais pourtant... Peut être ai je le nez trop collé à mon écran ?! $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 Modifié 4 Novembre 2008 par dldstyle
Dadou Posté 4 Novembre 2008 Posté 4 Novembre 2008 Essaie comme ça : $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 Posté 4 Novembre 2008 Auteur Posté 4 Novembre 2008 Merci de ton aide Dadou mais ça ne marche pas mieux (j'ai remplacé dans ton code utf8-decode par utf8_decode)...
dldstyle Posté 4 Novembre 2008 Auteur Posté 4 Novembre 2008 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 : $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.
thankol Posté 13 Février 2009 Posté 13 Février 2009 Salut, j'ai le même problème ... ... bon je continus à chercher voir si comprend pourquoi ! Thankol
Dadou Posté 13 Février 2009 Posté 13 Février 2009 Ouvre un autre post et met plus de détails si tu veux que l'on t'aide
jemords Posté 25 Février 2009 Posté 25 Février 2009 Pour ma part, je laisse tout en utf-8 et j'envois un email codé en utf-8 également sans url_decode... regarde ton header: $headers .= 'Content-type: text/plain; charset=utf-8' ."\n";
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant