Bonjour,
J'ai un formulaire de contact sur mon site web dont le handler a été écrit par moi, après de longues séances de recherche sur le web. La validation du formulaire par un visiteur du site se traduit par l'envoi d'un courriel à mon adresse.
Le handler fonctionne correctement depuis des mois mais je constate dans plusieurs clients mails que le courriel envoyé présente un problème d'encodage, uniquement dans le nom de l'expéditeur ou dans le sujet lorsqu'il y a un caractère accentué. J'ai par exemple "Hervé" au lieu de "Hervé", ce qui traduit du multibyte interprété comme du single byte, a priori UTF-8 interprété comme ANSI quelque chose.
Voici le bout de code où je remplis les en-têtes (toutes les variables inconnues en parties droites d'égalités sont de simples copies de valeurs dans $_POST):
Comme toutes mes pages web et tous mes fichiers (qui peuvent l'être) sont en UTF-8, j'imagine que $sender contient une chaîne en Unicode. Soit je précise que les en-têtes sont en Unicode, soit je convertis vers l'encodage pertinent (que je ne connais pas encore). Y a-t-il moyen de faire l'un ou l'autre ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 if (empty($visitor_email)) { $user_identification = '"' . $visitor_name . '"'; $to = $contact_form_email_addr; $sender = $user_identification . '<' . $contact_form_email_addr . '>'; $headers = array("From"=>$sender, "Subject"=>$subject,"To"=>$to, "Content-Transfer-Encoding"=>"quoted-printable", "Content-Type"=>'text/plain; charset="UTF-8"'); } else { $user_identification = '"' . $visitor_name . '" <' . $visitor_email . '>'; $to = $contact_form_email_addr . "," . $visitor_email; $headers = array("From"=>$user_identification, "Subject"=>$subject,"Reply-To"=>$user_identification, "To"=>$to, "Content-Transfer-Encoding"=>"quoted-printable", "Content-Type"=>'text/plain; charset="UTF-8"'); }
Merci.
Partager