Les accents francophones et les mails

WRInaute impliqué
Hello,

Voila j'ais quelques soucis avec les accents dans mes mails , ca dépend grandement des webmails , sur des un peu pourris style " laposte " , tout les accents dans les mails que j'envois avec php mail() sont remplacés par des ????

Je me demandais s'il y avais une solution pour que les accents passe mieux , y a pas un trucs a rajouter dans les header du mail par hasard ?


Bon sinon il reste la solution de virer tout les accents des mails et de préciser qu'ils ont été volontairement supprimés ... mais bon .
 
WRInaute passionné
soit avec un mail HTML avec une ligne du type :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

soit avec un str_replace(array('é', 'è', ...), array('&eacute;', '&egrave;', ..., $tontexte)
 
WRInaute passionné
j'utilise la fonction suivante :

Code:
define("EMAIL_MASTER", "moi@monsite.fr"); //Email de l'administrateur
define("EMAIL_MASTER_NAME", "Webmaster de mon site"); //Nom de l'administrateur

function send_mail($emailto, $sujet, $corps, $emailfrom, $priority=3) {
//envoi un email a un visiteur
	if(strtoupper(substr(PHP_OS,0,3)=='WIN')){
		$eol="\r\n";
		$sol="\n";
	}elseif(strtoupper(substr(PHP_OS,0,3)=='MAC')){
		$eol="\r";
	}else{
		$eol="\n";
	}
	if(!isset($sol)){
		$sol = $eol;
	}
	$Momentn = mktime().".".md5(rand(1000,9999));
	$bnd = md5(time()).rand(1000,9999);
	$bndp = md5(time()).rand(1000,9999);
	
	$Textmsg = eregi_replace("<br(.{0,2})>", $eol, $corps);
	$Textmsg = eregi_replace("</p>", $eol, $Textmsg);
	$Textmsg = strip_tags($Textmsg);
	if ($emailto == EMAIL_MASTER)
	//envoi du mail au webmaster
		$to = EMAIL_MASTER_NAME . "<" . EMAIL_MASTER . ">";
	else
		$to = "$emailto";
	if ($emailfrom == EMAIL_MASTER)
		$from = EMAIL_MASTER_NAME . "<" . EMAIL_MASTER . ">";
	else
		$from = "$emailfrom";
	$headers = 'From: '.$from.$eol;
	$headers .= 'Reply-To: '.$from.$eol;
	$headers .= 'Return-Path: '.$from.$eol;
	$headers .= 'X-Priority: '.$priority.$eol;
	$headers .= 'Message-ID: <'.$Momentn.'@PHPMAILSERVER>'.$eol;
	$headers .= 'Date: '.date("r").$eol;
	$headers .= 'Sender-IP: '.$_SERVER["REMOTE_ADDR"].$eol;
	$headers .= 'X-Mailer: PHP v'.phpversion().$eol;  
	$headers .= 'MIME-Version: 1.0'.$eol;
	$headers .= "Content-Type: multipart/mixed; $eol	   boundary=\"".$bndp."\"".$eol.$eol;
	$msg  = "This is a multi-part message in MIME format.".$eol.$eol;
	$msg .= "--".$bndp.$eol;
	$msg .= "Content-Type: multipart/alternative; $eol	   boundary=\"".$bnd."\"".$eol.$eol;
	$msg .= "--".$bnd.$eol;
	$msg .= "Content-Type: text/plain; charset=iso-8859-1".$eol;
	$msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
	$msg .= $Textmsg.$eol;
	$msg .= "--".$bnd.$eol;
	$msg .= "Content-Type: text/html; charset=iso-8859-1".$eol;
	$msg .= "Content-Transfer-Encoding: 8-bit".$eol.$eol;
	$msg .= $corps.$eol;
	$msg .= "--".$bnd."--".$eol.$eol;
	$msg .= "--".$bndp."--";
	//envoi du mail
	return @mail($to, $sujet, $msg, $headers);
	//voici la ligne a utiliser pour les sites heberges chez Online.net pour l'envoi des mails
	//pour l'utiliser, il faut enlever les '//' devant les lignes ci-dessous et les mettre devant la ligne ci-dessus !
	//return @email("webmaster",$to,$sujet,$corps);
}
 
WRInaute impliqué
Serious a dit:
quel mimetype utilises-tu?

Voici mes headers :

Code:
$headers .= "MIME-Version: 1.0\n"; 
$headers .= "X-Sender: <www.domaine.com>\n"; 
$headers .= "X-Mailer: PHP\n"; 
$headers .= "X-auth-smtp-user: webmaster@domaine.com \n"; 
$headers .= "X-abuse-contact: abuse@domaine.com";
 
WRInaute accro
webmasterlamogere a dit:
soit avec un mail HTML avec une ligne du type :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

soit avec un str_replace(array('é', 'è', ...), array('&eacute;', '&egrave;', ..., $tontexte)
Il faut un mail HTML aussi pour ta deuxième proposition !

Jean-Luc
 
WRInaute passionné
Stellvia a dit:
Serious a dit:
quel mimetype utilises-tu?

Voici mes headers :

Code:
$headers .= "MIME-Version: 1.0\n"; 
$headers .= "X-Sender: <www.domaine.com>\n"; 
$headers .= "X-Mailer: PHP\n"; 
$headers .= "X-auth-smtp-user: webmaster@domaine.com \n"; 
$headers .= "X-abuse-contact: abuse@domaine.com";

Tu n'as donc, a priori, pas de content-type defini: il faut l'ajouter. Evidement, il faut indiquer le bon jeu de caracteres, probablement iso-8859-1 mais ca peut etre autre chose aussi (utf-8, ...)
Content-Type: text/plain; charset=iso-8859-1
 
WRInaute impliqué
Bonjour,

Désolé de répondre si en retard :(

J'ais rajouté :

$headers .= "Content-Type: text/plain; charset=iso-8859-1";

Aucun changement

j'ais essayé aussi avec l'utf8 :

$headers .= "Content-Type: text/plain; charset=utf-8";


J'ais toujours les accents qui déconne avec le webmail chez laposte.net

Si quelqu'un a une idée ?
 
WRInaute discret
webmasterlamogere a dit:
soit avec un mail HTML avec une ligne du type :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

soit avec un str_replace(array('é', 'è', ...), array('&eacute;', '&egrave;', ..., $tontexte)

Pourquoi utiliser str_replace alors que la fonction htmlentities de php existe ????
 
WRInaute impliqué
Salut

Je fais un p'tit up a ce post car j'ais toujours des bug avec les accents et le webmail laposte ( surement d'autre mais bon je les connais pas tous )

C'est chiant :/ Si quelqu'un a une solution je lui ferais un gros bisous sur la fesse gauche looooool
 
WRInaute passionné
c'est peut-être que le webmail de la poste qui ne marche pas. As-tu essayé de lire le mail avec outlook et le serveur POP de la poste? Sinon essaye de les contacter directement.
 
WRInaute impliqué
Contacter laposte ?
Nan mais ils répondront jamais ... :/

Nan je pense qu'il y a un soucis avec mes headers , enfin .... je supose ... si je savais ca serais corrigé ;)
 
Discussions similaires
Haut