Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/07/2008, 14h11   #1
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 89
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : janvier 2006
Messages : 89
Points : 28
Points : 28
Par défaut [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 ?
Atharendil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2008, 21h48   #2
Membre régulier
 
Inscription : décembre 2006
Messages : 166
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 166
Points : 83
Points : 83
Envoyer un message via MSN à omdafer Envoyer un message via Skype™ à omdafer
Déjà je trouve que tu as beaucoup trop de fonction de convertion ! Non ?
C'est surtout utilisé pour les bases de données mysql.
omdafer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2008, 13h39   #3
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 89
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : janvier 2006
Messages : 89
Points : 28
Points : 28
En fait, s'il y a une erreur pendant l'envoi du mail (à cause d'un champ du formulaire ou de la fonction mail...), je renvoie toutes les informations renseignées par l'utilisateur sur la page du formulaire via le tableau $_GET.

Je suis donc obligé d'utiliser htmlentities pour être sûr que rien ne soit interprété à l'envoi du $_GET et au réaffichage.

Ensuite, les conversions en UTF-8 sont indispensables pour un affichage correct dans le corps du mail. Sans ça j'obtiens les mêmes signes é et autres à la place des caractères spéciaux dans le mail lui-même.
Atharendil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h07.


 
 
 
 
Partenaires

Hébergement Web