Discussion:
Probleme avec les accents dans un envoi email
(trop ancien pour répondre)
METIS
2008-08-14 13:38:55 UTC
Permalink
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\n";
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...\n\n";
$msg .= "Nom :\t$nom\n";
$msg .= "Adresse1 :\t$adresse1\n";
$msg .= "Adresse2 :\t$adresse2\n";
$msg .= "E-mail :\t$email\n";
$msg .= "Téléphone :\t$telephone\n";
$msg .= "Objet :\t$textarea\n";
$recipient = "***@yahoo.fr";
$subject = "Demande de contact";
$mailheaders = "From: test<> \n";
$mailheaders .= "Reply-To: ***@yahoo.fr\n";
$mailheaders .= "Bcc: ***@orange.fr\n\n";
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...
Sylvain SF
2008-08-15 14:14:07 UTC
Permalink
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";
les headers doivent contenir:

a) la version MIME uilisée:

$headers .= "MIME-Version: 1.0\r\n";

b) l'encodage du contenu

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

c) l'encodage du transfert

$headers .= "Content-Transfer-Encoding: 8bit\r\n";

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
2008-08-15 14:14:07 UTC
Permalink
Post by METIS
$mailheaders = "From: test<> \n";
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
2008-09-08 10:35:44 UTC
Permalink
Post by Olivier Masson
Post by METIS
$mailheaders = "From: test<> \n";
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
$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
2008-09-08 10:35:44 UTC
Permalink
Post by Olivier Masson
Post by METIS
$mailheaders = "From: test<> \n";
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
$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
2008-09-08 11:48:56 UTC
Permalink
Post by METIS
Post by Olivier Masson
En admettant que ce soit de l'iso-8859-1, peut-être
$mailheaders .= "Content-Type: text/plain;
charset=\"iso-8859-1\"\n"; $mailheaders .=
"Content-Transfer-Encoding: quoted-printable";
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$telephone\n";

Dans un cas comme dans l'autre, tu mettras charset=\"UTF-8\" au lieu de
charset=\"iso-8859-1\" dans $mailheaders.
METIS
2008-09-08 13:27:07 UTC
Permalink
Post by Olivier Miakinen
$msg .= utf8_encode("Téléphone") . " :\t$telephone\n";
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 : ***@test.fr
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.com\n\n");
$msg .= "Nom :\t$nom\n";
$msg .= "Adresse1 :\t$adresse1\n";
$msg .= "Adresse2 :\t$adresse2\n";
$msg .= "Code postal :\t$cp\n";
$msg .= "Ville :\t$ville\n";
$msg .= "E-mail :\t$email\n";
$msg .= utf8_encode("Téléphone") . " :\t$telephone\n";
$msg .= "Objet :\t$textarea\n";
$recipient = "***@yahoo.fr";
$subject = "Demande de contact";
$mailheaders = "From: $email<> \n";
$mailheaders .= "Content-Type: text/plain;
charset=\"UTF-8\"\n"; //ajout
$mailheaders .= "Content-Transfer-Encoding:
quoted-printable\n"; //ajout
$mailheaders .= "Reply-To: ***@yahoo.fr\n";
$mailheaders .= "Bcc: ***@orange.fr\n\n";
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
2008-09-08 20:09:34 UTC
Permalink
Post by METIS
....
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
2008-09-08 20:48:33 UTC
Permalink
Post by Paul
Post by METIS
....
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
2008-09-10 14:34:19 UTC
Permalink
Post by Olivier Miakinen
Post by Paul
Post by METIS
....
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...
Continuer la lecture sur narkive:
Loading...