8719 sujets

Développement web côté serveur, CMS

Bonjour,
j'ai un formulaire qui permet d'envoyer un mail via la fonction mail de php.
Le mail est sous forme html encodé en utf-8, mes pages sont sauvegardées en utf-8

J'ai deux problèmes :
1) Les caractères accentués s'affichent correctement dans le corp du mail mais pas dans le sujet (Ils sont remplacés par des caractères comme Â...)
2) Les apostrophes sont remplacés par \" ou \'

Voici mon code :

$to = "destinataire@domaine.fr";

/*Provient d'un formulaire. Si je l'affiche les accents apparaissent correctement*/
$subject = $_POST['sujet_mail'];

$message.= "
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"fr\">
<head>
<title>inscription</title>
<meta http-equiv=\"Content-Type\" content=\"text/HTML; charset=utf-8\" />
</head>
<body>";

$message.= nl2br($_POST['texte_mail']);
$message.="</body></html>";

$headers .= "From: expediteur@domaine.fr \r\n";
$headers.= "Content-Type: text/html; charset=utf-8 ";
$headers .= "MIME-Version: 1.0 ";

mail($to, $subject, $message, $headers);


Aidez moi svp.
Merci d'avance.
Modifié par tom_42 (22 Mar 2007 - 11:03)
Merci pour ta réponse, c'était en fait très simple garce à la fonction stripslashes() :

$message.= nl2br(stripslashes($_POST['texte_mail']));

Maintenant mon 2eme poblème est résolu.

Mais il me reste toujours des vilains caractères dans mes sujets.
Des idées?
Je progresse :
Le charset définit dans le header force le client mail à encoder en utf-8 c'est pourquoi dans le corps du mail les accents apparaissent correctement mais le sujet n'est à prioris pas concerné par le header donc étant lui aussi codé en utf-8 et mon client mail l'affichant en ISO, des caractères etrange remplace les accents.
En utilisant utf8_decode() le problème est résolu:
mail($to, utf8_decode($subject), $message, $headers);


Mais voila, ceci marche avec mon client mail car il enode en ISO mais est-ce pareil avec tous les clients mail?
Comment être sûr de l'encodage du client?

Merci d'avance.
j'avais le même problème avec :
é -> (é)
n° -> ( ° )
dans le contenu du mail d'envoi en PHP
j'ai juste fait comme vous dites utf8_decode($mail_contenu)
et je confirme que cela fonctionne .

merci à vous
Bonjour ;
Je confirme ; je viens de le faire et ça fonctionne très bien... à un détail près :
dans le texte de mon message, il y a "... vous...", et ça devient "... vo us..." (avec un espace entre le o et le u.
Quelqu'un(e) aurait-il(elle) une idée de la cause et de la façon de résoudre ce problème ?
Merci d'avance.
Modifié par LoupyLoup (04 Apr 2019 - 15:55)