Php Mail caractères bizarres [Résolu]

Signaler
Messages postés
832
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
24 octobre 2020
-
Messages postés
832
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
24 octobre 2020
-
Bonjour,
J'envoie des mails via php, j'appelle le script php avec des paramètres
par exemple je veux envoyer https://...mail.php?S=Hervé
j'encode l'URL comme ceci https://...mail.php?S=Herv%E9
le code de mail.php
<?php
$S=$_GET["S"]; // $_GET décode l'URL
$message = "bla bla;
$Mail = "destinataire@gmail.com";
$headers = "MIME-Version: 1.0\r\nContent-type:text/plain;charset=iso-8859-1\r\nFrom: expéditeur\r\n";
if (mail($Mail, $S, $message, $headers))
...

Je reçois bien le mail mais le sujet $S devient Herv�
Même problème avec le contenu du message.

J'ai essayé comme ceci
if (mail($Mail, utf8_decode($S), utf8_decode($message), $headers))


cette fois le sujet est Herv?

Comment encoder le sujet et le message pour qu'ils soient reçus correctement ?
Merci d'avance pour votre aide

3 réponses

Messages postés
832
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
24 octobre 2020
1
J'ai trouvé en partie
$headers = "MIME-Version: 1.0\r\nContent-type:text/html;charset=utf-8\r\nFrom: expéditeur\r\n";
if (mail($Mail, $Subject, $message, $headers))
les caractères spéciaux par exemple ($%&#) passent sans problème
mais les éè sont remplacés par un point d'interrogation blanc dans un losange noir (je ne parviens pas à le copier ici).
Messages postés
29900
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 octobre 2020
2 895
Bonjour,

Changer le charset du header pour le mettre en utf8 serait déjà une bonne piste.
Je t'invite également à suivre ceci :
https://www.commentcamarche.net/faq/47069-html-php-caracteres-accentues-et-l-utf8

.
Messages postés
832
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
24 octobre 2020
1
J'avais effectivement mis UTF-8 dans le header, voir mon second message.
Mais j'avais toujours des caractères bizarres, et avec utf8_encode aussi mais pas les mêmes.
J'ai compris.
Dans le mail j'ai du texte fixe donc en UTF-8 : si je les encode à nouveau ça fait des nœuds.
Par contre le php reçoit des paramètres qui ne sont pas en UTF-8.
La solution consiste donc à utf8_encodeR les paramètres et pas tout le message.
Ça fonctionne !