IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[php mail()] Encodage Headers


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Points : 45
    Points
    45
    Par défaut
    Bonsoir tt le monde,

    Après avoir effectué de longues recherches sur le sujet, il apparaît que :
    1) ce pb d'encodage d'entêtes de mail est récurrent
    2) je n'ai pas eu la réponse précise à mon pb
    3) j'ai mal à la tête...

    Donc voilà mon code (les champs dynamiques $_REQUEST étant issus de mon formulaire Contact) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    $destinataire="MOI <moi@monsite.com>" . ", ";
    $headers = "From: ".$_REQUEST['Nom']." <".$_REQUEST['Mail'].">\n";
    $headers .= "X?Sender: <moi@monsite.com>\n";
    $headers .= "X?Mailer: PHP\n";
    $headers .= "X?Priority: 1\n";
    $headers .= "Return?Path: <moi@monsite.com>\n";
    $headers .= "MIME-Version: 1.0\n"; 
    $headers .= "Content?Type: text/html; charset=UTF-8\n";
    $headers .= "Content-Transfer-Encoding: 8bit\n\n";
    $sujet = "Message d'un internaute";
    $corps.="Bonjour !\n\n";
    $corps.="Voici le message d'un internaute, suite à sa visite sur www.monsite.com :\n\n";
    $corps.="-----------------------------------\n";
    $corps.="Intérêt : ".html_entity_decode($_REQUEST['Interet'])."\n";
    $corps.="Le : ".$DATE." à ".$HEURE."\n";
    $corps.="-----------------------------------\n";
    $corps.="Nom : ".$_REQUEST['Nom']."\n";
    $corps.="Prénom : ".$_REQUEST['Prenom']."\n";
    $corps.="N° de téléphone : ".$_REQUEST['Telephone']."\n";
    $corps.="Adresse Email : ".$_REQUEST['Mail']."\n"."\n";
    $corps.="-----------------------------------\n";
    $corps.="Nb de personnes : ".$_REQUEST['Nb_pers']."\n";
    $corps.="-----------------------------------\n";
    $corps.="\n\nCeci est une transmission automatique de message depuis le site web www.monsite.com. Vous pouvez utiliser la fonction RÉPONDRE de votre messagerie, pour répondre à votre visiteur.";
    $corps.="\n\nBonne journée !";
     
    /* Envoi courriel */
    $transmission = mail($destinataire, $sujet, $corps, $headers);
    /* Vérification envoi */
    if (!$transmission) {
    }
    Donc, dans mon code, rien à redire, si ce n'est l'encodage dans l'entête ($headers = "From: ".$_REQUEST['Nom']." <".$_REQUEST['Mail'].">\n" :

    En effet, mon $_REQUEST['Nom'] (qui peut avoir des caractères accentués), donne des caractères bizarres, mais pas partout : par exemple, dans Thunderbird, j'ai mes caractères accentués impec, mais avec la plupart des webmails, ce nom a des caractères "bizarres" avec des @>! et compagnie !... (tout en précisant que le corps (body) du msg est impec, mais c'est normal puisque j'ai déclaré l'UTF-8 dans le charset...)
    ...et je ne vous parle même pas du webmail Orange, où là y'a rien qui va : on a les mêmes bizarres caractères pour le FROM, et en plus des caractères avec points d'interrogation sur fond noir dans le corps (body) du msg... mais bon c'est pas le webmail orange la priorité, ils sont juste nuls à mon avis...!!??

    Voilou... Avez-vous 1 retour d'expérience là-dessus ???

    Merci @+

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    mais c'est normal puisque j'ai déclaré l'UTF-8 dans le charset...)
    ça ne veut pas dire que ton fichier est encodé en UTF8. Ouvre le dans notepad++ et encode le en UTF-8.

    A+.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 82
    Points : 45
    Points
    45
    Par défaut
    Oui oui c'est bon, j'utilise l'éditeur Geany et mon document est bien encodé en UTF-8
    Merci

    Citation Envoyé par andry.aime Voir le message
    Bonjour,

    ça ne veut pas dire que ton fichier est encodé en UTF8. Ouvre le dans notepad++ et encode le en UTF-8.

    A+.

  4. #4
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    tu devrais pas séparer les entêtes du mail avec \r\n au lieu de \n. A noter que le séparateur de ligne dépendant de la plateforme \r\n est beaucoup plus standard etpourquoi tu as les ?.

    Tu peux tester avec celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $headers = "From: ".$_REQUEST['Nom']." <".$_REQUEST['Mail'].">\r\n";
    $headers .= "X-Sender: <moi@monsite.com>\r\n";
    $headers .= "X-Mailer: PHP\r\n";
    $headers .= "X-Priority: 1\r\n";
    $headers .= "Return?Path: <moi@monsite.com>\r\n";
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n\r\n";

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Même problème
    j'ai le même soucis.

    Mon mail est bien réceptionné chez certains FAI et il est réceptionné avec de droles de signes chez mon client (Manque de chance !)

    Une question cependant : parfois dans mes recherches, il est conseillé d'abandonner le \r\n au profit du \n tout court .

    mes headers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $headers  = "MIME-Version: 1.0\n";
    $headers .= "Content-Type: text/html; charset=\"utf-8\"\n";
    $headers .= "Content-Transfer-Encoding: 8bit\n";
    $headers .= "X-Priority: 1\n";
    $headers .= "From: \"monSite\"<no-reply@monSite.com>\n";
    $headers .= "Reply-To: \n";
    $headers .= "Cc:mail1.@mail.fr, <a href="mailto:mail2@mail.fr">mail2@mail.fr</a>\n";
    $headers .= "Bcc:mail3@mail.fr\n";
    //==========
    $subject  = utf8_decode("xxxx vous félicite");

    Questionnements :
    Puisque j'utilise l'encodage utf-8, ais-je tout de même besoin de slacher mes apostrophes dans les headers ?

    Si je n'applique pas utf8_decode dans le sujet celui ci est incorrect. Pourquoi puisque je suis en utf-8 sur mon code page ?

    (Je code sous notepad , je suis bien en UTF-8 sans BOM.)
    Merci de vos éclairages. J'aimerai en découdre.

Discussions similaires

  1. Envoyer un formulaire avec PHP mail
    Par jbidou88 dans le forum Langage
    Réponses: 8
    Dernier message: 02/06/2006, 10h16
  2. [PHP][XSLT] Encodage balise url
    Par thibaut06 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/02/2006, 18h46
  3. [Mail] Variable de PHP --> mail en HTML --> PHP
    Par JeanMi66 dans le forum Langage
    Réponses: 3
    Dernier message: 09/12/2005, 20h46
  4. Réponses: 14
    Dernier message: 07/12/2005, 16h56
  5. php mail() +config internet
    Par djabara dans le forum Apache
    Réponses: 25
    Dernier message: 24/11/2005, 22h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo