problème avec les accents dans un envoi d'email par PHP

Le
METIS
Bonjour,
Bon, désolé, on en a déjà parlé mais moi, le soudoué du code, j'y arrive
pas.
Avec le code ci-dessous, je me fais envoyer un formulaire en PHP (récupéré
je ne sais plus où).
Le problème, c'est que les accents donnent
Nathalie Mazé dans le champ De de l'email reçu
et dans l'email lui même, j'ai comme résultat soit
Téléphone : téléphone
soit
Téléphone : téléphone
en fonction de ce que je mets dans la ligne :
$headers .= "Content-type: text/plain; charset=UTF-8";

Comme je n'y connais que couic, c'est au pif.
Et au pif, après 36 essais, j'arrive à rien.

Merci à celui qui m'aidera et merci à ceux qui supportent ma nullité
indécrotable.

code

<?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=$HTTP_POST_VARS['nom'];
$mail=$HTTP_POST_VARS['mail'];

/////voici la version Mine
$headers = "MIME-Version: 1.0";

//////ici on détermine le mail en format texte
//$headers .= "Content-type: text/plain; charset=iso-8859-1"; ligne
neutralisée
$headers .= "Content-type: text/plain; charset=UTF-8";


////ici on détermine l'expediteur et l'adresse de réponse
$headers .= "From: $nom <$mail>Reply-to : $nom <$mail>X-Mailer:PHP";

$subject="Stage 2009";
$destinataire="moi@machin.fr";

$body="Stage 2009Prenom + Nom : $nomSociete : $societePoste :
$posteAdresse : $adresseEmail : $emailTelephone : $telephone" ;
mail($destinataire,$subject,$body,$headers);
include("merci.php");
}
else
{
//captcha faux
include("erreur.php");
}
}
?>

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé,
moi c'est metis15 et
je tourne à l'Oranges
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 5
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre Goiffon
Le #22062351
METIS wrote:
Bon, désolé, on en a déjà parlé mais moi, le soudoué du code, j'y arrive
pas.
Avec le code ci-dessous, je me fais envoyer un formulaire en PHP (récupéré
je ne sais plus où).
Le problème, c'est que les accents donnent...
Nathalie Mazé dans le champ De de l'email reçu



Chaine UTF-8 lue comme de l'ISO Latin-1.

...et dans l'email lui même, j'ai comme résultat soit...
Téléphone : téléphone
...soit...
Téléphone : téléphone
...en fonction de ce que je mets dans la ligne :
$headers .= "Content-type: text/plain; charset=UTF-8rn";



Normal...

Votre code PHP récupère donc vraisemblablement des chaines en UTF-8,
donc 2 alternatives :
- vous convertissez vos chaines en ISO Latin-1 et envoyé vos mails en
Latin-1
- vous laissez vos chaines telles quelles et envoyez vos mails en UTF-8
(codage pas vraiment bien digéré par les différents clients mails...)
Olivier Miakinen
Le #22062331
Le 08/12/2008 14:01, METIS a écrit :

[...] dans l'email lui même, j'ai comme résultat soit...
Téléphone : téléphone
...soit...
Téléphone : téléphone
...en fonction de ce que je mets dans la ligne :
$headers .= "Content-type: text/plain; charset=UTF-8rn";



Je n'en crois rien. ;-)

Je crois qu'en changeant de charset entre UTF-8 et (par exemple)
ISO-8859-1, tu peux avoir soit :
- Téléphone : téléphone (Latin1)
- T?l?phone : téléphone (UTF-8)
soit :
- Téléphone : t?l?phone (UTF-8)
- Téléphone : téléphone (Latin1)

Comme je n'y connais que couic, c'est au pif.



À lire de toute urgence :

Ensuite, lire la réponse de Pierre Goiffon.
METIS
Le #22062301
Olivier Miakinen wrote:
Le 08/12/2008 14:01, METIS a écrit :

[...] dans l'email lui même, j'ai comme résultat soit...
Téléphone : téléphone
...soit...
Téléphone : téléphone
...en fonction de ce que je mets dans la ligne :
$headers .= "Content-type: text/plain; charset=UTF-8rn";



Je n'en crois rien. ;-)

Je crois qu'en changeant de charset entre UTF-8 et (par exemple)
ISO-8859-1, tu peux avoir soit :
- Téléphone : téléphone (Latin1)
- T?l?phone : téléphone (UTF-8)
soit :
- Téléphone : t?l?phone (UTF-8)
- Téléphone : téléphone (Latin1)



Exact !!!
Mais je ne me souvenais pas en détail alors j'ai mis la même chose partout
pour montrer le bazar.
Perspicaces les petits !!!! (;o))))))))))))

Comme je n'y connais que couic, c'est au pif.



À lire de toute urgence :



OK merci.

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé,
moi c'est metis15 et
je tourne à l'Oranges...
METIS
Le #22062291
Pierre Goiffon wrote:
METIS wrote:


[...]
$headers .= "Content-type: text/plain; charset=UTF-8rn";



Normal...

Votre code PHP récupère donc vraisemblablement des chaines en UTF-8,
donc 2 alternatives :
- vous convertissez vos chaines en ISO Latin-1 et envoyé vos mails en
Latin-1
- vous laissez vos chaines telles quelles et envoyez vos mails en
UTF-8 (codage pas vraiment bien digéré par les différents clients
mails...)



Heu... vouai.
Concrètement, je fais comment ?
(je suis toujours aussi handicapé du code...)

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé,
moi c'est metis15 et
je tourne à l'Oranges...
Olivier Miakinen
Le #22062281
Le 08/12/2008 18:51, METIS a écrit :

Je n'en crois rien. ;-)

Je crois qu'en changeant de charset entre UTF-8 et (par exemple)
ISO-8859-1, tu peux avoir soit :
- Téléphone : téléphone (Latin1)
- T?l?phone : téléphone (UTF-8)
soit :
- Téléphone : t?l?phone (UTF-8)
- Téléphone : téléphone (Latin1)



Exact !!!
Mais je ne me souvenais pas en détail alors j'ai mis la même chose partout
pour montrer le bazar.



Et comment veux-tu obtenir de l'aide sans épuiser ceux qui tentent de
le faire, si tu donnes des informations si peu précises ? Note que, vu
que tu n'as toujours pas dit dans laquelle des deux situations tu te
trouves, je ne sais toujours pas lequel des deux mots est en Latin1 et
lequel en UTF-8.

En outre, le bout de code que tu donnais dans ton premier article ne
correspond à aucun des deux :
[...] $emailnTelephone : $telephone" ;

Je veux bien t'aider, mais sans un minimum d'efforts de ta part
j'abandonnerai avant la fin. D'autant que j'ai été échaudé avec le fil
sur PEM4 : je ne sais plus combien de dizaines d'échanges il y a eu
avant que tu ne donnes l'intitulé du bouton sur lequel tu as cliqué.
Et encore, c'était de l'« (à peu près) [sic] ».

À lire de toute urgence :



OK merci.



Avant que je ne me lasse complètement, tu dois aussi savoir dans quel
jeu de caractères se trouve le bout de code que tu as donné en tête de
fil, et l'indiquer clairement.

Ainsi, tu remplaceras :
----------------------------------------------------------
<?php
extract($_POST,EXTR_OVERWRITE);
----------------------------------------------------------

par :
----------------------------------------------------------
<?php
header('Content-Type: text/html; charset=UTF-8');
extract($_POST,EXTR_OVERWRITE);
----------------------------------------------------------

ou par :
----------------------------------------------------------
<?php
header('Content-Type: text/html; charset=ISO-8859-1');
extract($_POST,EXTR_OVERWRITE);
----------------------------------------------------------
Bruno Desthuilliers
Le #22062271
METIS a écrit :
(snip)
$nom=$HTTP_POST_VARS['nom'];
$mail=$HTTP_POST_VARS['mail'];



(snip - aucune validation ni rien sur $nom et $mail)

////ici on détermine l'expediteur et l'adresse de réponse
$headers .= "From: $nom <$mail>rnReply-to : $nom <$mail>nX-Mailer:PHP";



Tu veux pas me donner l'adresse de ton formulaire, là ? Je connais
quelques spammeurs que ça intéresserait...
Olivier Miakinen
Le #22062261
Le 08/12/2008 22:45, Bruno Desthuilliers a écrit :

Tu veux pas me donner l'adresse de ton formulaire, là ? Je connais
quelques spammeurs que ça intéresserait...



Bon réflexe. Moi j'ai été tellement découragé par les échanges
précédents que je n'ai même pas pensé à vérifier ça.
METIS
Le #22062241
Olivier Miakinen wrote:
[...]

Bon, merci Olivier et les autres de me supporter, moi pauvre simple
graphiste allergique au code depuis basic 0.1 (;o))))

Donc ce qu'il se passe avec l'envoi de form décrit au début du fil:
$headers .= "Content-type: text/plain; charset=UTF-8rn";
Cette ligne provoque l'envoi comme ceci...

Nom : é
Pr&eacute;nom : prénom
Email : test
Tlphone : test
Objet : test

1/ é, prénom, test est ce que j'écris dans le champ.
2/ Noter que j'ai écrit Prénom avec "é" en entité et Téléphone avec des "é"
normaux.
3/ ...et dans le champ De, le "é" se transforme en é

J'avais fait des essais avec...
$headers .= "Content-type: text/plain; charset=iso-8859-1rn";
C'était pas mieux (mais pas avec les mêmes problèmes, mais là, je ne peux
pas le reproduire car la personne s'en sert en ce moment, avec qq problèmes
sur les accentuées).

Merci pour votre patience à tous.

PS : il faut que j'essaye ce que tu m'indiques à la fin de ton dernier post.

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé,
moi c'est metis15 et
je tourne à l'Oranges...
METIS
Le #22062231
Bruno Desthuilliers wrote:
METIS a écrit :
(snip)
$nom=$HTTP_POST_VARS['nom'];
$mail=$HTTP_POST_VARS['mail'];



(snip - aucune validation ni rien sur $nom et $mail)

////ici on détermine l'expediteur et l'adresse de réponse
$headers .= "From: $nom <$mail>rnReply-to : $nom
<$mail>nX-Mailer:PHP";



Tu veux pas me donner l'adresse de ton formulaire, là ? Je connais
quelques spammeurs que ça intéresserait...



Vous savez les garçons, vous êtes sympa, mais je suis allergique au code,
c'est pas nouveau et plutôt irrémédiable.
Je viens ici pour avoir de l'aide.
Je suis même prêt à payer s'il le faut.

Donc soyons constructif, que faut-il pour que ça marche bien?
(;o)))

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé,
moi c'est metis15 et
je tourne à l'Oranges...
METIS
Le #22062211
Olivier Miakinen wrote:
Le 08/12/2008 14:01, METIS a écrit :
Comme je n'y connais que couic, c'est au pif.



À lire de toute urgence :



Bon, j'ai lu, j'ai même compris (en gros).
Mais ça ne donne pas de solution sur la manière d'écrire..?
Ou alors, c'est que je suis plus que bouché (ce qui ne serait pas étonnant).

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé,
moi c'est metis15 et
je tourne à l'Oranges...
Publicité
Poster une réponse
Anonyme