Envoi mail PHP: erreur caractères (é,è,...) [Résolu/Fermé]

Signaler
Messages postés
168
Date d'inscription
jeudi 22 décembre 2011
Statut
Membre
Dernière intervention
16 janvier 2018
-
Messages postés
1640
Date d'inscription
dimanche 21 octobre 2012
Statut
Membre
Dernière intervention
10 décembre 2016
-
Bonsoir à tous,

Mon problème est le suivant: J'ai une page web (example1.php) dans laquelle il y a un "textarea" et une page web (example-post.php) qui est chargée d'envoyer par e-mail le contenu du textarea.
Le problème est qu'une fois l'e-mail envoyé, celui-ci n'affiche pas correctement les caractères spéciaux (é,è,ê,â,ect...), comment résoudre ce problème?
Voici une partie du code de la page example1-post.php:
$email="example@live.com";
if(!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $email)){$passage_ligne = "\r\n";}else{$passage_ligne = "\n";}
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
$sujet = "Contact Example";
$header = "From: \"Example\"<contact@example.com>".$passage_ligne;
$header.= "Reply-to: \"Example\" <contact@example.com>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.nl2br($_POST['message']).$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary.$passage_ligne;
mail($email,$sujet,$message,$header);


Merci d'avance pour vos réponses, bonne soirée

1 réponse

Messages postés
1640
Date d'inscription
dimanche 21 octobre 2012
Statut
Membre
Dernière intervention
10 décembre 2016
434
Bonjour,

Dans header, tu peux mettre :

$header .='Content-Type: text/plain; charset="iso-8859-15"' . $passage_ligne;

Tu forceras ainsi l'encodage des caractères.
Messages postés
168
Date d'inscription
jeudi 22 décembre 2011
Statut
Membre
Dernière intervention
16 janvier 2018
10
Merci beaucoup, ça a fonctionné !
Par contre, je devais modifier $message et pas $header
Messages postés
1640
Date d'inscription
dimanche 21 octobre 2012
Statut
Membre
Dernière intervention
10 décembre 2016
434
D'habitude c'est dans les headers qu'on met ça.