Probleme avec les accents dans un envoi email

Le
METIS
Bonsoir/jour,
j'utilise ce code PHP et les accentuées sont mal traitées :
soit ça marche bien dans Outlook Express 6 réglé en latin 9
et ça marche pas dans ma messagerie Orange (avec IE(;o))).
Quand c'est bien d'un côté, c'est du code ou des petits
carrés de l'autre et réciproquement

Et dans cette ligne :
$msg .= "Téléphone :t$telephone";
les "é" de "Téléphone" soit n'y sont pas, soit sont
remplacés par du code, même quand ça va bien pour le
reste

Sachant que je suis zéro en PHP
Que faire ?

<?php
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=strip_tags($_POST['nom']);
$adresse1=strip_tags($_POST['adresse1']);
$adresse2=strip_tags($_POST['adresse2']);
$email=strip_tags($_POST['email']);
$telephone=strip_tags($_POST['telephone']);
$textarea=strip_tags($_POST['textarea']);
$msg = "Formulaire de demande de contact";
$msg .= "Nom :t$nom";
$msg .= "Adresse1 :t$adresse1";
$msg .= "Adresse2 :t$adresse2";
$msg .= "E-mail :t$email";
$msg .= "Téléphone :t$telephone";
$msg .= "Objet :t$textarea";
$recipient = "xxxxx@yahoo.fr";
$subject = "Demande de contact";
$mailheaders = "From: test<> ";
$mailheaders .= "Reply-To: xxxxx@yahoo.fr";
$mailheaders .= "Bcc: xxxxx@orange.fr";
mail($recipient, $subject, $msg, $mailheaders);
include("mercicontact.php");
}
else
{
//captcha faux
include("erreur.php");
}
}
>

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé, mettez-moi des oranges
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sylvain SF
Le #16553471
METIS wrote on 14/08/2008 15:38:

j'utilise ce code PHP et les accentuées sont mal traitées : soit ça
marche bien dans Outlook Express 6 réglé en latin 9 et ça marche pas
dans ma messagerie Orange (avec IE(;o))).
[...]
Que faire ?



définir correctement les headers, notamment avec le charset utilisé,
évidemment il faudra indiquer la même chose que l'encodage de votre
source PHP qui contient ces caractères accentés (ou utiliser les
fonctions de conversion de PHP vers le charset cible, par exemple
utf8_encode() si vous mailez en utf8 - ce qui n'est pas souhaité,
ce n'est qu'un exemple).

$mailheaders = "From: test<> n";
$mailheaders .= "Reply-To: ";
$mailheaders .= "Bcc: ";



les headers doivent contenir:

a) la version MIME uilisée:

$headers .= "MIME-Version: 1.0rn";

b) l'encodage du contenu

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

c) l'encodage du transfert

$headers .= "Content-Transfer-Encoding: 8bitrn";

l'ordre est (généralement) quelconque, ajoutez les votres avant
ou après mais n'insérez le double saut de ligne qu'après le dernier.

Sylvain.
Olivier Masson
Le #16553481
METIS a écrit :

$mailheaders = "From: test<> n";
$mailheaders .= "Reply-To: ";
$mailheaders .= "Bcc: ";
mail($recipient, $subject, $msg, $mailheaders);



Il est bon de vérifier comment est encodé le texte que tu inclus dans
ton mail.
En admettant que ce soit de l'iso-8859-1, peut-être qu'ajouter ceci
pourrait résoudre ton problème :

$mailheaders .= "Content-Type: text/plain; charset="iso-8859-1"n";
$mailheaders .= "Content-Transfer-Encoding: quoted-printable";
METIS
Le #16752781
Olivier Masson wrote:
METIS a écrit :

$mailheaders = "From: test<> n";
$mailheaders .= "Reply-To: ";
$mailheaders .= "Bcc: ";
mail($recipient, $subject, $msg, $mailheaders);



Il est bon de vérifier comment est encodé le texte que tu
inclus dans ton mail.
En admettant que ce soit de l'iso-8859-1, peut-être
qu'ajouter ceci pourrait résoudre ton problème :

$mailheaders .= "Content-Type: text/plain;
charset="iso-8859-1"n"; $mailheaders . > "Content-Transfer-Encoding: quoted-printable";



Désolé de répondre si tard, je ne m'attendais pas à une
réponse par ici!!(;o))))
Idem pour Sylvain SF

J'essaye ça donc, au rapport un peu plus tard !
Merci (;o)))

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé, mettez-moi des oranges...
METIS
Le #16752791
Olivier Masson wrote:
METIS a écrit :

$mailheaders = "From: test<> n";
$mailheaders .= "Reply-To: ";
$mailheaders .= "Bcc: ";
mail($recipient, $subject, $msg, $mailheaders);



Il est bon de vérifier comment est encodé le texte que tu
inclus dans ton mail.
En admettant que ce soit de l'iso-8859-1, peut-être
qu'ajouter ceci pourrait résoudre ton problème :

$mailheaders .= "Content-Type: text/plain;
charset="iso-8859-1"n"; $mailheaders . > "Content-Transfer-Encoding: quoted-printable";



Bon, bé ça marche pas :
Téléphone : test téléphone
Objet : test pour le bon codage des caractères en toute
cisconstance...

Mais j'ai pas viré d'autre "ajout" en amont comme...

$nom=strip_tags($_POST['nom']);
$adresse1=strip_tags($_POST['adresse1']);
$adresse2=strip_tags($_POST['adresse2']);
$cp=strip_tags($_POST['cp']);
$ville=strip_tags($_POST['ville']);
$email=strip_tags($_POST['email']);
$telephone=strip_tags($_POST['telephone']);
$textarea=strip_tags($_POST['textarea']);

Les strip_tags, je ne sais pas trop à quoi ça sert (je sais
pas du tout pour être honnête!)

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé, mettez-moi des oranges...
Olivier Miakinen
Le #16753261
Le 08/09/2008 12:35, METIS a écrit :

En admettant que ce soit de l'iso-8859-1, peut-être
qu'ajouter ceci pourrait résoudre ton problème :

$mailheaders .= "Content-Type: text/plain;
charset="iso-8859-1"n"; $mailheaders . >> "Content-Transfer-Encoding: quoted-printable";



Bon, bé ça marche pas :
Téléphone : test téléphone



Visiblement, ton fichier PHP est en ISO-8859-1 tandis que les données
que tu reçois et renvoies sont en UTF-8. Une solution, si ton éditeur
de texte le permet, ce serait de le lire puis de le sauver en UTF-8.
Mais bien sûr tu dois alors aussi changer le Content-Type de la page
en retour.

Sinon, tu peux faire :
$msg .= utf8_encode("Téléphone") . " :t$telephonen";

Dans un cas comme dans l'autre, tu mettras charset="UTF-8" au lieu de
charset="iso-8859-1" dans $mailheaders.
METIS
Le #16754031
Olivier Miakinen wrote:
Sinon, tu peux faire :
$msg .= utf8_encode("Téléphone") . " :t$telephonen";
Dans un cas comme dans l'autre, tu mettras
charset="UTF-8" au lieu de charset="iso-8859-1" dans
$mailheaders.



Bon, grand merci, ça marche :
Formulaire de demande de contact envoyé depuis le site
www.sophrologie-giret.com
Nom : test accentuée é è à ù ê ç ¤
Adresse1 : test accentuée é è à ù ê ç ¤
Adresse2 : test accentuée é è à ù ê ç ¤
Code postal : 12345
Ville : test accentuée é è à ù ê ç ¤
E-mail :
Téléphone : 0123456789
Objet : test accentuée é è à ù ê ç ¤

Grâce à toi et... :

<?php
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=strip_tags($_POST['nom']);
$adresse1=strip_tags($_POST['adresse1']);
$adresse2=strip_tags($_POST['adresse2']);
$cp=strip_tags($_POST['cp']);
$ville=strip_tags($_POST['ville']);
$email=strip_tags($_POST['email']);
$telephone=strip_tags($_POST['telephone']);
$textarea=strip_tags($_POST['textarea']);
$msg = utf8_encode("Formulaire de demande de contact
envoyé depuis le site www.sophrologie-giret.comnn");
$msg .= "Nom :t$nomn";
$msg .= "Adresse1 :t$adresse1n";
$msg .= "Adresse2 :t$adresse2n";
$msg .= "Code postal :t$cpn";
$msg .= "Ville :t$villen";
$msg .= "E-mail :t$emailn";
$msg .= utf8_encode("Téléphone") . " :t$telephonen";
$msg .= "Objet :t$textarean";
$recipient = "";
$subject = "Demande de contact";
$mailheaders = "From: $email<> n";
$mailheaders .= "Content-Type: text/plain;
charset="UTF-8"n"; //ajout
$mailheaders .= "Content-Transfer-Encoding:
quoted-printablen"; //ajout
$mailheaders .= "Reply-To: ";
$mailheaders .= "Bcc: ";
mail($recipient, $subject, $msg, $mailheaders);
include("mercicontact.php");
}
else
{
//captcha faux
include("erreur.php");
}
}
?>

S'il persiste quelques incohérences dans ce code, ne pas
hésiter à me le dire (je suis toujours nul en codage).
Et je ne sais pas à quoi sert strip_tags.
Si personne n'a le temps de m'expliquer, je ferai un coup de
Google.

Encore merci.

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé, mettez-moi des oranges...
Paul
Le #16758621
METIS a écrit :
....
Et je ne sais pas à quoi sert strip_tags.
Si personne n'a le temps de m'expliquer, je ferai un coup de Google.


Fais plutot un clic là : http://www.php.net
Olivier Miakinen
Le #16758901
Le 08/09/2008 22:09, Paul a écrit :
METIS a écrit :
....
Et je ne sais pas à quoi sert strip_tags.
Si personne n'a le temps de m'expliquer, je ferai un coup de Google.


Fais plutot un clic là : http://www.php.net



Allez, on va être sympa : http://www.php.net/strip_tags
METIS
Le #16775921
Olivier Miakinen wrote:
Le 08/09/2008 22:09, Paul a écrit :
METIS a écrit :
....
Et je ne sais pas à quoi sert strip_tags.
Si personne n'a le temps de m'expliquer, je ferai un
coup de Google.


Fais plutot un clic là : http://www.php.net



Allez, on va être sympa : http://www.php.net/strip_tags



Cool les gars, merci.
Mais comme je ne suis pas codeur, je ne sais pas si ça sert
à quelque chose en l'occurrence...

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé, mettez-moi des oranges...
Publicité
Poster une réponse
Anonyme