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 :
Ceci afin de pouvoir écrire correctement ces informations dans le corps du mail sans que les caractères spéciaux soient interprétés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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'); }
Dans les headers, je ne peux pas écrire de code HTML, je fais donc :
Et les headers du mail :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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');
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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";
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 ?
Partager