fonction mail, problème de charset chez certains FAI...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : fonction mail, problème de charset chez certains FAI...

par metis15 » 29 mai 2009, 16:30

Non, je vais essayer ce soir...Merci pour cette piste AB.
Tiens, j'ai le même problème que toi :
Dès que la personne met une adresse chez Free genre [email protected], j'ai un bout de l'entête qui arrive avec le reste du mail...

Mon code :

Code : Tout sélectionner

<?php header('Content-Type: text/html; charset=UTF-8'); extract($_POST,EXTR_OVERWRITE); if(isset($_POST['captchaResult'])) { session_start(); $_POST['captchaResult'] = strtolower($_POST['captchaResult']); $_SESSION['captchaResult'] = strtolower($_SESSION['captchaResult']); if($_POST['captchaResult'] === $_SESSION['captchaResult']) { //captcha OK on envoi le message $nom=$_POST['nom']; $prenom=$_POST['prenom']; $email=$_POST['email']; $telephone=$_POST['telephone']; $objet=$_POST['objet']; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/plain; charset="iso-8859-1"\r\n"; $headers .= "From: $email\r\n"; $headers .= "Cc: $email\r\n"; $headers .= "Bcc: [email protected]\r\n"; $subject="Contact..."; $destinataire = '[email protected]'; $body="Blabla...\n\nContact demandé par :\nNom : $nom\nPrénom : $prenom\nEmail : $email\nTéléphone : $telephone\nObjet :$objet" ; mail($destinataire, $subject, $body, $headers); include("merci.php"); } else { //captcha faux include("erreur.php"); } } ?>
Avec ça, au niveau du charset, ça va plutôt bien, mais avec Free... merdouille.

par dunbar » 28 mai 2009, 16:38

Non, je vais essayer ce soir...Merci pour cette piste AB.
Le tuto de AB et peut-être aussi suivre les conseils de ryle il a taper
 . "\n";
et toi tu montre ta correction :
$entetemail = "From: $from_email \n"; 
$entetemail .= "Cc: \n"; 
$entetemail .= "Bcc: \n"; 
$entetemail .= "Reply-To: $from_email \n"; 
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ; 
$entetemail .= "Date: $entetedate";  
$entetemail .= "MIME-Version: 1.0\n"; 
$entetemail .= "Content-Type: text/html; charset="UTF-8"\n"; 
$entetemail .= "Content-Transfer-Encoding: 8bit\n"; 
:-k

par Megadeth » 28 mai 2009, 16:00

Non, je vais essayer ce soir...Merci pour cette piste AB.

par AB » 27 mai 2009, 01:50

Tu n'as pas à utiliser htmlentities() ni htmlspecialchars() pour l'envoi de ton mail.

Par ailleurs as-tu mis header('Content-Type: text/html; charset=UTF-8'); au début de ta page php
et mysql_query("SET NAMES 'utf8'"); juste après la conexion à ta bdd ?

Un petit tuto sur l'utf8 ici

par Megadeth » 27 mai 2009, 01:35

Re sur ce topic,

Apparemment les htmlentities() et autres dans une fonction mail ne fonctionne pas chez free, j'ai toujours des soucis :?

J'ai fait ceci :
$message = stripslashes($_POST["message"]);
$message2 = htmlspecialchars($message);//ou autre
$mail = mail("monadresse","test",$message2,$entetemail);
Mes entêtes de page (utf8 of course) et entête mail :
$from_email = $_POST["mail"];
$entetedate = date("D, j M Y H:i:s -0600");
$entetemail = "From: $from_email \n";
$entetemail .= "Cc: \n";
$entetemail .= "Bcc: \n";
$entetemail .= "Reply-To: $from_email \n";
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n" ;
$entetemail .= "Date: $entetedate"; 
$entetemail .= "MIME-Version: 1.0\n";
$entetemail .= "Content-Type: text/html; charset=\"UTF-8\"\n";
$entetemail .= "Content-Transfer-Encoding: 8bit\n";  
So, je vois pas ? Ereg_replace fastidieux ?

Mega
;)

par ludwig » 22 mai 2009, 15:08

tu as essayé utf8_encode($lemail) ?

par Megadeth » 22 mai 2009, 14:14

Merci mais non, toujours rien. Exemple : Président ...

Mega
;)

par consequences » 22 mai 2009, 14:06

Salut a toi,

suis pas un pro mais essaye plutot comme ca :


$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/html; charset="UTF-8"\n";
$headers .= "Content-Transfer-Encoding: 8bit\n";

avec des doubles cotes en fait au lieu des simple cote

par Megadeth » 22 mai 2009, 13:03

Re,

Désolé Ryle, ca ne marche toujours pas #-o

J'ai beau trituré le code dans tous les sens...

Mega
;)

par Ryle » 22 mai 2009, 12:16

Yep ! :)

Je pense que ton soucis vient bien de l'entête du mail. Il faut savoir que le \n n'est interprété correctement en php que lorsqu'il est placé entre guillemets et pas entre apostrophes (comme pour les variables en fait)

Essayes comme ceci :
$headers = 'MIME-Version: 1.0' . "\n"; 
$headers.= 'Content-Type: text/html; charset="UTF-8"' . "\n"; 
$headers.= 'Content-Transfer-Encoding: 8bit' . "\n"; 

par Megadeth » 22 mai 2009, 11:54

Re,

Voilà
$headers = 'MIME-Version: 1.0\n';
$headers .= 'Content-Type: text/html; charset="UTF-8"\n'; 
$headers .= 'Content-Transfer-Encoding: 8bit\n';
ca m'affiche : r&eacute;action. Tu entendais bien &eacute; pour é ?

Mega
;)

par Ryle » 22 mai 2009, 11:52

Les entités html pourraient effectivement être une solution si ton mail est envoyé en html :)

Y a quoi dans ton $headers ?

par Megadeth » 22 mai 2009, 11:43

$lemail = mail($_POST["destina_mail"],"Perte du mot de passe","Salut,\n
Action, réaction !\n
Ci-dessous ton mot de passe : c'était pas ça par hasard ?\n
".$rows["password"]."\n
Pas la peine de me remercier, je suis là pour ça\n
A+\n",$headers);
C'est ça mon message. Besoin de mettre un utf8_encode sur le champ password ? C'est de l'utf-8 en base.

Je vois mettre des entités html à la place du texte accentué ?

Merci de ton aide, t'es un chef ;)

Mega
;)

par Ryle » 22 mai 2009, 11:31

Vi mais qu'en est-il du contenu de ce que tu envois dans le mail ? :)

C'est un texte en dur dans ton script ? ça provient d'une bdd ? d'un fichier externe ?

Tu peux essayer d'y mettre un coup d'utf8_encode ou utf8_decode et vérifier le charset spécifié dans l'entête du mail :)

par Megadeth » 22 mai 2009, 11:25

Bonjour Ryle,

Ma page d'envoi est en utf-8, mon script d'envoi est en utf-8 (les entêtes) et l'affichage merde dans la boite mail :?

Mega
;)