Mail() php probléme d'accent dans sujet
Résolu
benoitXV
Messages postés
241
Statut
Membre
-
krmasson -
krmasson -
Bonjour,
J'ai un problème (souvent évoqué I Know!)
J'envoi un mail (en php) dont les éléments sont importé depuis une base postgresql.
Le corps du message (qui contient des caractères accentués) est correct a la reception de e-mail.
Mais le sujet me donne "Validation de l'inscription sur A\&\eacute;ro-dico." à la place de
"Validation de l'inscription sur Aéro-dico."
Si je fait un echo sur la chaine de caractère correspondante au sujet. Le resultat est correcte.
Je seche...
mon header:
$headers="From: aero-dico \n";
$headers.="Reply-To: \n";
$headers.= "MIME-version: 1.0\n";
$headers.= "Content-type: text/html; charset= UTF-8\n";
merci d'avance
J'ai un problème (souvent évoqué I Know!)
J'envoi un mail (en php) dont les éléments sont importé depuis une base postgresql.
Le corps du message (qui contient des caractères accentués) est correct a la reception de e-mail.
Mais le sujet me donne "Validation de l'inscription sur A\&\eacute;ro-dico." à la place de
"Validation de l'inscription sur Aéro-dico."
Si je fait un echo sur la chaine de caractère correspondante au sujet. Le resultat est correcte.
Je seche...
mon header:
$headers="From: aero-dico \n";
$headers.="Reply-To: \n";
$headers.= "MIME-version: 1.0\n";
$headers.= "Content-type: text/html; charset= UTF-8\n";
merci d'avance
Configuration: Windows XP Firefox 2.0.0.14
A voir également:
- Accent dans adresse mail
- Mon adresse mac - Guide
- Creer adresse mail yahoo - Guide
- Créer une adresse mail hotmail - Guide
- Exemple adresse mail gmail - Guide
- Créer une adresse mail - Guide
9 réponses
Pour que le sujet du mail prennent bien en compte les accents, il faut ajouter devant utf8_decode.
Ce qui donne :
$headers ='From: "Contact"<[email protected]>'."\n";
$headers .='Reply-To: [email protected]'."\n";
$headers .='Content-Type: text/html; charset="UTF-8"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$sujet = utf8_decode('RemplaClinic : Clôture de la demande du');
mail('[email protected]', $sujet, 'Mon message', $headers);
Et voila plus de souci avec l'accent dans le sujet.
Ce qui donne :
$headers ='From: "Contact"<[email protected]>'."\n";
$headers .='Reply-To: [email protected]'."\n";
$headers .='Content-Type: text/html; charset="UTF-8"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
$sujet = utf8_decode('RemplaClinic : Clôture de la demande du');
mail('[email protected]', $sujet, 'Mon message', $headers);
Et voila plus de souci avec l'accent dans le sujet.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour ma part aucune des solutions exposées ne fonctionnait avec le sujet suivant : "Message envoyé à Pascal" car
- Soit le sujet était affiché correctement par le client mail mais le mail était affécté par l'Antispam d'une erreur liée à un caractére illégal dans le sujet (BAD HEADER SECTION, Non-encoded 8-bit data)
- soit le mail était 'clean' pour l'Antispam mais le sujet était incorrectement affiché par le client mail.
J'ai utilisé cela :
$sujet = utf8_decode($sujet);
$sujet= mb_encode_mimeheader($sujet,"UTF-8", "B", "\n");
et cela fonctionne correctement
Si l'un de vous peut m'aider à comprendre pourquoi, cela serait mieux....
- Soit le sujet était affiché correctement par le client mail mais le mail était affécté par l'Antispam d'une erreur liée à un caractére illégal dans le sujet (BAD HEADER SECTION, Non-encoded 8-bit data)
- soit le mail était 'clean' pour l'Antispam mais le sujet était incorrectement affiché par le client mail.
J'ai utilisé cela :
$sujet = utf8_decode($sujet);
$sujet= mb_encode_mimeheader($sujet,"UTF-8", "B", "\n");
et cela fonctionne correctement
Si l'un de vous peut m'aider à comprendre pourquoi, cela serait mieux....
"pour moi ce qui fonctionne c'est d'utiliser mb_encode_mimeheader() avec utf8_decode() :
$subject = utf8_decode($subject);
$subject = mb_encode_mimeheader($subject,"UTF-8");"
Je confirme que cela marche avec tous les clients mail que j'ai pu tester : outlook, gmail, yahoo et même l'appli mail de windows 8 qui me posait tant de problèmes!
MERCI!
$subject = utf8_decode($subject);
$subject = mb_encode_mimeheader($subject,"UTF-8");"
Je confirme que cela marche avec tous les clients mail que j'ai pu tester : outlook, gmail, yahoo et même l'appli mail de windows 8 qui me posait tant de problèmes!
MERCI!
Merci, 7 ans que ce truc m'em...ait.
Pour info (c'est facile d'expliquer une fois que ça marche :-) ), le utf8_decode convertit la chaîne en iso-latin, et mb_encode se charge ensuite de l'escaper, après l'avoir convertie en UTF-8.
mb_encode attend apparemment uniquement de l'iso-latin1 en entrée.
Le troisième paramètre ('Q' ou 'B' spécifie le format d'escapage (Q pour Base64, B pour Quoted printable (tous les caractères autres que A-Z a-z sont transformés en =XX)).
Seul inconvénient, ça n'encode pas le 'oe', qui n'appartient pas à l'iso8859-1, mais je vais vivre avec...
Pour info (c'est facile d'expliquer une fois que ça marche :-) ), le utf8_decode convertit la chaîne en iso-latin, et mb_encode se charge ensuite de l'escaper, après l'avoir convertie en UTF-8.
mb_encode attend apparemment uniquement de l'iso-latin1 en entrée.
Le troisième paramètre ('Q' ou 'B' spécifie le format d'escapage (Q pour Base64, B pour Quoted printable (tous les caractères autres que A-Z a-z sont transformés en =XX)).
Seul inconvénient, ça n'encode pas le 'oe', qui n'appartient pas à l'iso8859-1, mais je vais vivre avec...
Merciiiiiiii encore !
Ne pas oublier, bien sûr, la dernière ligne des headers :
" $headers .='Content-Transfer-Encoding: 8bit'; "
mb_encode_mimeheader() ne marche pas dans mon cas...
mb_internal_encoding('UTF-8');
$subject = mb_encode_mimeheader($subject);