Page 1 sur 1

Problème de codage CHARSET pour fonction mail

Posté : 14 mars 2005, 22:38
par matt.t
Bonjour à tous et merci de me lire, voici mon ptit soucis :

J'ai créé un formulaire de contact html qui envoie le contenu de ses variables à un script php qui s'occupe de la fonction mail. Le soucis, c'est que le contenu du message tapé par le surfeur est tronqué pour peu qu'il y ai des accents ou caractères spéciaux.

Voici les deux codes que j'utilise, merci bcp à vous de me corriger tout çà et de m'expliquer ainsi je grandis en sagesse :)
<?php 
$message=htmlentities($message);
$destinataire="[email protected]"; 
$contenu="<html><head></head><body><font size=2 face=arial>Bonjour, <br>Ce message provient de votre formulaire en ligne et contient les informations suivantes  $message</font></body></html>";
$headers="MIME-Version: 1.0\r\n";
$headers.= "Content-type: text/html; charset=ISO-8859-15\r\n";
$headers.="content-transfer-encoding: 8bit\n";
$headers.="From: $prenom $nom<$email>\r\n";
$headers.="Reply-To: <$email>\n";
mail ($destinataire,$sujet,$contenu,$headers); 
include "http://www.michielsensprl.be/index.php";
?> 
et dans mon formulaire htm :

Code : Tout sélectionner

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">
Merci!
Matt

Posté : 15 mars 2005, 00:04
par eSp
Salut,

Essaie plutôt ceci:
<?php 
$message = htmlentities($_POST['message']); //$_POST['message'] si le message est récupéré via un formulaire
$destinataire = "[email protected]"; 
$contenu = "<html><head></head><body><font size=2 face=arial>Bonjour, <br>Ce message provient de votre formulaire en ligne et contient les informations suivantes ".$message."</font></body></html>"; //Concaténe tes variables
$headers = "MIME-Version: 1.0\r\n"; 
$headers.= "Content-type: text/html; charset=iso-8859-1\r\n"; //Ton charset était faux
$headers.= "From: $prenom $nom<$email>\r\n"; 
$headers.= "Reply-To: <$email>\n"; 
mail ($destinataire,$sujet,$contenu,$headers); 
?> 
:wink:

toujours pas....

Posté : 15 mars 2005, 21:02
par matt.t
J'ai fait tout ce que tu m'as dit mais ca ne fonctionne tjs pas correctement, voici les codes :
<?php 
$message = htmlentities($_POST['message']);
$destinataire="[email protected]"; 
$contenu ="<html><body><head><title>Michielsen SPRL</title></head>";
$contenu.="<font size=2 face=arial>Bonjour,<br>ce message provient de votre formulaire en ligne et contient les informations suivantes :<br><br>";
$contenu.="<b>Nom</b> : $nom<br>";
$contenu.="<b>Prénom</b> : $prenom<br>";
$contenu.="<b>Téléphone</b> : $tel<br>";
$contenu.="<b>Fax</b> : $fax<br>";
$contenu.="<b>Message</b> : $message<br>";
$contenu.="<br>Vous pouvez directement répondre à cette personne en utilisant la commande \"répondre\" de votre logiciel de messagerie.</font>";
$contenu.="</body></html>";
$headers = "MIME-Version: 1.0\r\n"; 
$headers.= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers.= "From: $prenom $nom<$email>\r\n"; 
$headers.= "Reply-To: <$email>\n"; 
mail ($destinataire,$sujet,$contenu,$headers); 
include "http://www.michielsensprl.be";
?> 
Voici par exemple ce que j'ai comme email : l\'été est là \"hello\"

Dans mon formulaire html, j'ai également spécifier le type de codage, je ne trouve pas d'infos sur le net.

Merci de m'aider encore, :D

A bientot

Posté : 15 mars 2005, 21:44
par eSp
Bah moi, ça marche très bien avec le code suivant:
<?php 
$message = htmlentities($_POST['message']); 
$destinataire="[email protected]"; 
$contenu ="<html><head><title>Michielsen SPRL</title></head><body>"; //Ta balise <body> était mal placé
$contenu.="<font size=2 face=arial>Bonjour,<br>ce message provient de votre formulaire en ligne et contient les informations suivantes :<br><br>"; 
$contenu.="<b>Nom</b> : $_POST['nom']<br>"; 
$contenu.="<b>Prénom</b> : $_POST['prenom']<br>"; 
$contenu.="<b>Téléphone</b> : $_POST['tel']<br>"; 
$contenu.="<b>Fax</b> : $_POST['fax']<br>"; 
$contenu.="<b>Message</b> : $message<br>"; 
$contenu.="<br>Vous pouvez directement répondre à cette personne en utilisant la commande \"répondre\" de votre logiciel de messagerie.</font>"; 
$contenu.="</body></html>"; 
$headers = "MIME-Version: 1.0\r\n"; 
$headers.= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers.= "From: $prenom $nom<$email>\r\n"; 
$headers.= "Reply-To: <$email>\n"; 
mail ($destinataire,$sujet,$contenu,$headers); 
//Ton include sert à rien et je ne vois pas ce que tu voulais faire avec !
?> 
++

ouiiin

Posté : 16 mars 2005, 12:54
par matt.t
avec ton code voici ce que j'obtiens :

Code : Tout sélectionner

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/dhk/www/mail.php on line 6
mais que se passe t-il??
y-a-t-il differentes versions de php qui font que ca fonctionne ou non?

merci de m'aider encore une fois. :roll:

l'include c'est pour qu'une fois le formalaire envoyé, le visiteur revienne à la page index, mais ca ne fonctionne pas

Posté : 16 mars 2005, 20:01
par Xenon_54
Il a utilisé les variables $_POST['nom'] directement dans la chaine de caractères. Essaie de les entourer par {} comme ceci:
$contenu.="<b>Nom</b> : {$_POST['nom']}<br>";
;)

Posté : 17 mars 2005, 23:12
par matt.t
suite,

j'ai beau essayé htmlentities ou specialchars, rien de rien, je recois toujours des l\'été comme message...

quelqu'un peut-il passer en revue ce qui peut poser problème avec moi,
dois regarder du coté des fichiers ini d'ovh mon hebergeur, du codage charset incorrect qqpart, que ce soit en mode "echo" ou par envoi du message, le resultat est tjs le meme, tous les accents francais, sont mal encodés.

voici mon script jusqu'ici, je remercie d'avance la personne qui perdra qqminutes à m'aider. j'en peux :oops: :D :) plus....
<?php 
$message = htmlentities(stripslashes($_POST["message"])); 
$destinataire="[email protected]"; 
$contenu ="<html><head><title>Michielsen SPRL</title></head>";
$contenu.="<body><font size=2 face=arial>Bonjour,<br>ce message provient de votre formulaire en ligne et contient les informations suivantes :<br><br>";
$contenu.="<b>Nom</b> : {$_POST['nom']}<br>";
$contenu.="<b>Prénom</b> : {$_POST['prenom']}<br>";
$contenu.="<b>Téléphone</b> : {$_POST['tel']}<br>";
$contenu.="<b>Fax</b> : {$_POST['fax']}<br>";
$contenu.="<b>Message</b> : {$_POST['message']}<br>";
$contenu.="<br>Vous pouvez directement répondre à cette personne en utilisant la commande \"répondre\" de votre logiciel de messagerie.</font>";
$contenu.="</body></html>";
$headers = "MIME-Version: 1.0\r\n"; 
$headers.= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers.= "From: $prenom $nom<$email>\r\n"; 
$headers.= "Reply-To: <$email>\n"; 
mail ($destinataire,$sujet,$contenu,$headers); 
echo "ok";
?>

Posté : 17 mars 2005, 23:13
par flitox