Mail() php probléme d'accent dans sujet
Résolu/Fermé
benoitXV
Messages postés
228
Date d'inscription
lundi 2 juin 2008
Statut
Membre
Dernière intervention
24 mai 2022
-
23 juin 2008 à 14:46
krmasson - 8 avril 2015 à 21:33
krmasson - 8 avril 2015 à 21:33
A voir également:
- Accent php
- E avec accent - Guide
- Easy php - Télécharger - Divers Web & Internet
- Retour a la ligne php ✓ - Forum PHP
- Comment faire un accent circonflexe sur un clavier azerty ✓ - Forum Réseaux sociaux
- U accent grave clavier ✓ - Forum Logiciels
9 réponses
Laugarhraun
Messages postés
14
Date d'inscription
mercredi 16 juin 2010
Statut
Membre
Dernière intervention
10 septembre 2010
44
10 sept. 2010 à 15:44
10 sept. 2010 à 15:44
Bonjour,
Bien que le sujet soit vieux, une rechercher de "accent sujet mail" dans google renvoie cette page en premier résultat.
Une fonction PHP encodera votre sujet comme vous le désirez : mb_encode_mimeheader()
Bien que le sujet soit vieux, une rechercher de "accent sujet mail" dans google renvoie cette page en premier résultat.
Une fonction PHP encodera votre sujet comme vous le désirez : mb_encode_mimeheader()
Pour que le sujet du mail prennent bien en compte les accents, il faut ajouter devant utf8_decode.
Ce qui donne :
$headers ='From: "Contact"<contact@contact.com>'."\n";
$headers .='Reply-To: contact@contact.com'."\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@email.com', $sujet, 'Mon message', $headers);
Et voila plus de souci avec l'accent dans le sujet.
Ce qui donne :
$headers ='From: "Contact"<contact@contact.com>'."\n";
$headers .='Reply-To: contact@contact.com'."\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@email.com', $sujet, 'Mon message', $headers);
Et voila plus de souci avec l'accent dans le sujet.
benoitXV
Messages postés
228
Date d'inscription
lundi 2 juin 2008
Statut
Membre
Dernière intervention
24 mai 2022
17
23 juin 2008 à 15:33
23 juin 2008 à 15:33
En fait c'etais l'inverse.
html_entity_decode($mon_sujet, ENT_QUOTES,'UTF-8');
merci
html_entity_decode($mon_sujet, ENT_QUOTES,'UTF-8');
merci
benoitXV
Messages postés
228
Date d'inscription
lundi 2 juin 2008
Statut
Membre
Dernière intervention
24 mai 2022
17
23 juin 2008 à 16:52
23 juin 2008 à 16:52
c'est html_entity_decode()
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...
benoitXV
Messages postés
228
Date d'inscription
lundi 2 juin 2008
Statut
Membre
Dernière intervention
24 mai 2022
17
23 juin 2008 à 15:12
23 juin 2008 à 15:12
j'ai bien essayé htmlentities(mon_sujet, ENT_QUOTES,'UTF-8');
mais c'est pire.
mais c'est pire.
5 juil. 2011 à 12:22
Merciiiiiiii encore !
2 mai 2012 à 12:23
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...
8 juin 2013 à 09:36
12 sept. 2013 à 18:01
mb_internal_encoding('UTF-8');
$subject = mb_encode_mimeheader($subject);