[Mail] caractères spéciaux dans les headers
Bonjour,
je suis en train d'écrire une petite page php qui permet à un utilisateur du site d'envoyer un mail.
Le mail est bien envoyé mais je rencontre un léger problème quand je veux définir le header "From" du mail : lorsque le mail est envoyé, je reçois "De: Jérémie <toto@titi.fr>" alors que je devrais recevoir ceci dans le mail : "De: Jérémie <toto@titi.fr>".
Pour récupérer les informations du nom et mail de l'expéditeur, je fais :
Code:
1 2 3 4 5 6 7 8
| if (get_magic_quotes_gpc())
{
$firstname = htmlentities(stripslashes(trim($_POST['firstname'])), ENT_QUOTES, 'UTF-8');
$exp = htmlentities(stripslashes(trim($_POST['email'])), ENT_QUOTES, 'UTF-8');
}else{
$firstname = htmlentities(trim($_POST['firstname']),ENT_QUOTES, 'UTF-8');
$exp = htmlentities(trim($_POST['email']),ENT_QUOTES, 'UTF-8'); ENT_QUOTES, 'UTF-8');
} |
Ceci afin de pouvoir écrire correctement ces informations dans le corps du mail sans que les caractères spéciaux soient interprétés.
Dans les headers, je ne peux pas écrire de code HTML, je fais donc :
Code:
1 2 3
| $hexp = html_entity_decode($exp, ENT_QUOTES, 'UTF-8');
$hname = html_entity_decode($name, ENT_QUOTES, 'UTF-8');
$hfirstname = html_entity_decode($firstname, ENT_QUOTES, 'UTF-8'); |
Et les headers du mail :
Code:
1 2 3 4 5
| $headers = 'Mime-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=utf-8'."\r\n";
$headers .= 'X-Confirm-Reading-To: '.$hexp."\r\n";
$headers .= 'From: '.$hname.' '.$hfirstname.' <'.$hexp.'>'."\r\n";
$headers .= 'Date: '.date('r')."\r\n\r\n"; |
Le résultat dans le champ "De :" du mail envoyé est encore pire lorsque je passe une chaîne avec des caractères interprétables dans le formulaire.
Par exemple : "'<,;'"&!?->, se retrouve sous la forme "De: ?-@'".
Comment puis-je faire pour éviter l'interprétation des caractères spéciaux dans les headers et l'affichage correct de ces derniers ?