Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme avec les accents dans un envoi email

9 réponses
Avatar
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\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 = "xxxxx@yahoo.fr";
$subject = "Demande de contact";
$mailheaders = "From: test<> \n";
$mailheaders .= "Reply-To: xxxxx@yahoo.fr\n";
$mailheaders .= "Bcc: xxxxx@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...

9 réponses

Avatar
Olivier Masson
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";
Avatar
Sylvain SF
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.
Avatar
METIS
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...
Avatar
METIS
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...
Avatar
Olivier Miakinen
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.
Avatar
METIS
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...
Avatar
Paul
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
Avatar
Olivier Miakinen
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
Avatar
METIS
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...