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

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

42 réponses
Avatar
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\r\n";

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\r\n";

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


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

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

$body="Stage 2009\nPrenom + Nom : $nom\nSociete : $societe\nPoste :
$poste\nAdresse : $adresse\nEmail : $email\nTelephone : $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...

10 réponses

1 2 3 4 5
Avatar
Pierre Goiffon
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...)
Avatar
Olivier Miakinen
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 :
<http://french.joelonsoftware.com/Articles/Unicode.html>

Ensuite, lire la réponse de Pierre Goiffon.
Avatar
METIS
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 :
<http://french.joelonsoftware.com/Articles/Unicode.html>



OK merci.

--
<|[;o)) METIS
http://www.graphM.com
Pour m'écrire en privé,
moi c'est metis15 et
je tourne à l'Oranges...
Avatar
METIS
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...
Avatar
Olivier Miakinen
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 :
<cit.>
[...] $emailnTelephone : $telephone" ;
</cit.>

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 :
<http://french.joelonsoftware.com/Articles/Unicode.html>



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);
----------------------------------------------------------
Avatar
Bruno Desthuilliers
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...
Avatar
Olivier Miakinen
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.
Avatar
METIS
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...
Avatar
METIS
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...
Avatar
METIS
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 :
<http://french.joelonsoftware.com/Articles/Unicode.html>



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...
1 2 3 4 5