Problème d'accent avec un mail de formulaire
BlueCoffee
Messages postés
25
Date d'inscription
Statut
Membre
Dernière intervention
-
CookieSpirit Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
CookieSpirit Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
Salutation,
La question a maintes fois était posée mais je n'ai malheureusement pas trouvé mon bonheur parmi les nombreuses solutions trouvés en farfouinant sur Google : dans les mails que je reçois via mon formulaire de contact les accents sont remplacés par divers symboles.
Mon code :
Quelqu'un pour me guider ?
La question a maintes fois était posée mais je n'ai malheureusement pas trouvé mon bonheur parmi les nombreuses solutions trouvés en farfouinant sur Google : dans les mails que je reçois via mon formulaire de contact les accents sont remplacés par divers symboles.
Mon code :
<?php
$to = "monadresse@gmail.com";
$sujet = "Message : " . $_POST['sujet'];
$message =
"Nom : " . $_POST['nom'] . "\r\n" .
"E-mail : " . $_POST['email'] . "\r\n" .
"Sujet : " . $_POST['sujet'] . "\r\n" .
"\r\n" .
"Message: " . $_POST['message'];
$from=$_POST['email'];
$headers = "From: $from" ;
mail($to,$sujet,$message,$headers);
?>
Quelqu'un pour me guider ?
A voir également:
- Accent dans adresse mail
- Darkino nouvelle adresse - Guide
- Adresse mac - Guide
- Créer une adresse mail hotmail - Guide
- Changer adresse dns - Guide
- Intitulé de l'adresse ✓ - Forum Loisirs / Divertissements
2 réponses
Déjà ATTENTION, ne jamais directement insérer des $_POST dans quelque chose qui sera affiché, toujours prendre des précautions et aussi tester si l'adresse e-mail est d'une forme valide avec la fonction filter_var();
Ensuite pour ton problème d'accents c'est simplement dû à l'encodage du message qui différe de celui du mail.
Essaye en ajoutant :
après
Cordialement, CookieSpirit
if(filter_var($email, FILTER_VALIDATE_EMAIL)) { //effectuer la préparation et l'envoi du mail } else { //Afficher une erreur }
Ensuite pour ton problème d'accents c'est simplement dû à l'encodage du message qui différe de celui du mail.
Essaye en ajoutant :
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
après
$headers = "From: $from" ;
Cordialement, CookieSpirit
Merci, je commence à y voir plus clair :
- Effectivement, une phrase test ressort correctement.
- Effectivement encore, la page de mon formulaire n'était pas en iso-8859-1.
Une fois passé en iso-8859-1 le formulaire envois parfaitement les données.
Mais après cela ce sont les caractères de ma page HTML qui s'affichent mal.
Ces histoires d'encodage me troublent... Je vais potasser des articles là dessus pour voir si je trouve une solution. J'imagine qu'il doit y avoir un moyen de tout affiché correctement.
- Effectivement, une phrase test ressort correctement.
- Effectivement encore, la page de mon formulaire n'était pas en iso-8859-1.
Une fois passé en iso-8859-1 le formulaire envois parfaitement les données.
Mais après cela ce sont les caractères de ma page HTML qui s'affichent mal.
Ces histoires d'encodage me troublent... Je vais potasser des articles là dessus pour voir si je trouve une solution. J'imagine qu'il doit y avoir un moyen de tout affiché correctement.
Même après avoir lu quelques articles tout cela me semble encore bien obscure.
Il n'y a pas moyen de garder la page de mon formulaire en UTF-8 et de mettre mon fichier PHP en UTF-8 également ?
Déclarer "header('Content-Type: text/html;charset=UTF-8');" ne semble rien changer.
D'ailleurs dans le bas de mon fichier PHP il y a un petit bout de HTML avec une phrase, cette dernière refuse également d'afficher les accents.
Il n'y a pas moyen de garder la page de mon formulaire en UTF-8 et de mettre mon fichier PHP en UTF-8 également ?
Déclarer "header('Content-Type: text/html;charset=UTF-8');" ne semble rien changer.
D'ailleurs dans le bas de mon fichier PHP il y a un petit bout de HTML avec une phrase, cette dernière refuse également d'afficher les accents.
Si votre site n'est destiné qu'à un public francophone ou avec un alphabet classique (anglais etc.), je vous conseille fortement de mettre toutes vos pages en iso-8859-1, avec un logiciel tel que notepad ++ vous serez en mesure de modifier les problèmes d'accentuations dans vos pages.
Cependant si vous vous destinez également à un public Russe/Espagnol ou tout autre langue avec un alphabet ou une accentuation différente, il faudra effectivement rester en UTF-8
N'ayant qu'un site en iso-8859-1 et un système de mail qui va de pair, je ne pourrai pas vous aider pour ce qui est de l'UTF-8.
Cordialement, CookieSpirit
Cependant si vous vous destinez également à un public Russe/Espagnol ou tout autre langue avec un alphabet ou une accentuation différente, il faudra effectivement rester en UTF-8
N'ayant qu'un site en iso-8859-1 et un système de mail qui va de pair, je ne pourrai pas vous aider pour ce qui est de l'UTF-8.
Cordialement, CookieSpirit