Je souhaiterai vos avis et conseils à propos du script suivant.
J'ai un Mac et quand je fais un test en m'envoyant un mail à moi-même via le formulaire, le mail reçu est bon (sans problème de caractères accentués).
J'ai réalisé un site pour un ami Québécois qui a un PC et avec le même script les caractères accentués s'affichent mal chez lui.
Il y a visiblement un problème d'encodage entre UTF-8 et ISO.
J'ai parcouru de nombreux forums à la recherche de la solution, mais malgré bien des essais je n'arrive pas à résoudre ce problème.
Merci de votre aide.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
</head>
<body>
<?php
// Encodage d'une page html en charset=UTF-8
header('Content-type: text/html; charset=UTF-8');
// Mettre votre adresse email ci-dessous :
$to = 'monadressemail@hotmail.com';
// Les information de l'expéditeur
$name = stripslashes($_POST['name']); // récupère le nom de l'expéditeur
$email = stripslashes($_POST['email']); // récupère l'adresse mail de l'expéditeur
$subject = stripslashes($_POST['subject']); // récupère le sujet du mail
// Le message que vous allez recevoir dans votre boîte mail
$msg = "Envoyé par : $name \r\n"; // le nom de l'expéditeur
$msg .= "e-Mail : $email \r\n"; // l'adresse mail de l'expéditeur
$msg .= "Sujet : $subject \r\n\n"; // le sujet
$msg .= "Message : \r\n\n".stripslashes($_POST['message'])."\r\n\n"; // le message
// Informations optionnelles sur l'expéditeur
$msg .= "Informations sur l'expéditeur : \r\n\n"; // Titre
$msg .= "Adresse IP : ".$_SERVER["REMOTE_ADDR"]."\r\n"; // adresse IP de l'expéditeur
$msg .= "Navigateur : ".$_SERVER["HTTP_USER_AGENT"]."\r\n"; // informations sur le navigateur
$msg .= "Page d'expédition : ".$_SERVER["HTTP_REFERER"]; // lien d'expédition
// Fin Informations optionnelles
if (mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nReturn-Path: $email\r\n")){
// echo "<h3>Your message has been sent, Thanks! / Votre message a été envoyé, Merci !</h3>"; // message affiché si le mail est bien envoyé
header('Location: http://www.monsite.com/merci.shtml'); // redirection vers la page de remerciement
exit();
}else{
echo "<h3>L'envoi a échoué !</h3>"; // message affiché s'il y a une erreur
}
?>
</body>
</html>
C'est de l'UTF-8 affiché comme de l'ISO, ça. Il faut faire la même chose pour les entêtes du mail (Content-Type: text/plain; charset=utf-8).
if (mail($to, $subject, $msg, "From: $email\r\nReply-To: $email\r\nContent-Type: text/plain; charset=utf-8\r\nReturn-Path: $email\r\n")){
Où avez-vous vu que le mail reprenait celui du script (ce n'est pas les mêmes protocoles en plus) ? Mais, après, ça dépend aussi du client (un webmail, notamment, pourrait ne pas l'honorer s'il est différent de son ossature).
Il l'a fait. Jones-jr, je ne te parles pas du code, mais de l'encodage de ton fichier par ton éditeur de texte. Sous notepad++ : encodage > Encoder en utf-8 (sans bom)
Où avez-vous vu que le mail reprenait celui du script (ce n'est pas les mêmes protocoles en plus) ? Mais, après, ça dépend aussi du client (un webmail, notamment, pourrait ne pas l'honorer s'il est différent de son ossature).
Salut julp,
Je viens de faire un essai avec ton correctif, mais il faut que j'attende la réponse de mon ami Québécois pour savoir si ça a marché...
J'avoue que je ne comprend pas très bien le sens de ta citation (ci-dessus) à propos des protocoles...
C'était bien ça !!!! Merci à vous deux !
Problème de caractères accentués dans un mail
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli