8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,
J'ai crée un formulaire de contact, mis je suis confronté à un petit problème d'encodage.
Quand je reçois le mail de mon formulaire et qu'il y a des é ou des à ou des ' , je me retrouve avec des caractères tout bizarre du style bérangé de la brioche ' Do'rée

J'ai essayé quelques techniques trouvé sur le net, mais en vain. Voici ci-dessous mon code :
//If there is no error, send the email
		if(!isset($hasError)) {

            $emailTo = ''. $current_user->user_email .'';
			$subject = 'Demande de reservation de '.$name;
			$sendCopy = trim($_POST['sendCopy']);
			$body = "\n\nDate d'arrivee: $datein\n\nDate de depart: $dateout\n\nNom: $name \n\nNombre de personnes: $people\n\nEmail: $email\n\nTelephone: $tel \n\nDemande: $comments";
			$headers = 'De : mon site <'.$emailTo.'>' . "\r\n" . 'Repondre a : ' . $email;
			
			mail($emailTo, $subject, $body, $headers);

			if($sendCopy == true) {
				$subject = 'Votre demande de reservation';
				$headers = 'De : <noreply@somedomain.com>';
				mail($email, $subject, $body, $headers);
			}

			$emailSent = true;



Autre question, quand je recois le mail, dans le nom qui apparait quand je recois le mail, le l'adresse mail est une adresse de mon serveur genre monsite@ovh-60plan.net , comment faire pour avoir le nom de mon site et quelle ligne modifier ?
Merci par avance pour votre précieuse aide ! bonne journée
Salut,

Je pense que le problème viens du codage du site (utf-8, ISO-8859-1,...)

Je dois avouez que j'ai le même problème et suis entrain de chercher la solutions depuis ce matin Smiley decu

Pour ma part je suis sur que tout le site est en utf-8 vérifie de ton côté, j'ai même forcé avec un .htaccess mais cela ne change rien Smiley decu Si je trouve une solution, je la posterai...)

Spirou
Bonjour,

Si tu vois ce genre de caractère c'est que l'e-mail est encodé en UTF-8.

Essaie en remplaçant la ligne :
mail($emailTo, $subject, $body, $headers);


Par :
mail($emailTo, $subject, utf8_decode($body), $headers);

La fonction utf8_decode() décode la chaîne en argument et la convertit au format Western (ISO-8859-1).
Plus d'infos sur la fonction utf8_decode().
Modifié par Boudha (06 Feb 2012 - 18:23)
Boudha a écrit :
Bonjour,

Si tu vois ce genre de caractère c'est que l'e-mail est encodé en UTF-8.

Essaie en remplaçant la ligne :
mail($emailTo, $subject, $body, $headers);


Par :
mail($emailTo, $subject, utf8_decode($body), $headers);

La fonction utf8_decode() décode la chaîne en argument et la convertit au format Western (ISO-8859-1).
Plus d'infos sur la fonction utf8_decode().


J'ai fait ca et ca marche
$body = "Nom: ".utf8_decode($name)." \n\nEmail: ".utf8_decode($email)."\n\nDemande: ".utf8_decode($comments)."";


Mais ta solution qui doit aussi fonctionner est plus simple ! merci
Bonsoir,
Merci je dirais même mieux milles merci à boudha car ça fais des heures que j'essayais 50 façons de régler ce problème.
Commençons par le commencement...
Voici mon code (cela peux éventuellement servir à qqu ...) pris sur le site http://www.6ma.fr (Image de sécurité et code pour le formulaire du moins la base)

<?php 

// On initialise la session
session_start();
/* on vérifie que la code est toujours mémorisé en session et qu'il fait 6 caractères */
if(!isset($_SESSION['code']) || strlen($_SESSION['code']) != 6) die("Erreur !");

// on vérifie que la code entré est valide
if($_SESSION['code'] != $_POST['verif']) die('<script>window.location.replace("http://www.monsite.be/erreurcode.php");</script>');


if(isset($_POST) && isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['email']) && isset($_POST['telephone']) && isset($_POST['infos']))

{
	extract($_POST);
    echo $text;
   if(!empty($nom) && !empty($prenom) && !empty($email) && !empty($telephone) && !empty($infos)){
		$message=str_replace("\'","'",$message);
		$destinataire="xxxxxxx@xxxx.be";
		$sujet="Formulaire de contact";
		$message="Une nouvelle question est arrivée \n
		Nom du preneur : $nom \n
		Prenom : $prenom \n
		Email : $email \n
		Telephone : $telephone \n";
		Message : $infos";
		
		$entete="From: $nom \n Reply-To: $email";
		mail($destinataire,$sujet,$message,$entete);
        header("Location:merci.php");
   }
   else{ 
		
        header("Location:erreur.php");
		  
   }
}
// on détruit les variables de session, désormais inutiles
session_unset();
session_destroy();
?>



Pour ce qui me concerne, j'ai modifier la ligne .
mail($destinataire,$sujet,$message,$entete);

par
mail($destinataire,$sujet,$message,utf8_decode($infos),$entete);


Et j'ai bien sur 2 fois le message qui apparaissais.... j'ai donc supprimer la ligne
Message : $infos";


Ce qui fais maintenant le message propre et sans tous ses accents Smiley biggol

Juste une petite question comme cela ce sera nickel pour moi, J'aurais aimé que le message arrive après les champs email, nom etc... et pas avant comme pour le moment Smiley confus

Dernière petite précision j'ai enregistrer ma page en ISO et pas UTF-8
Je ne cherche pas à comprendre Smiley confus

Merci pour l'aide Smiley cligne
Spirou