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 :

Balises HTML non interprétées dans le mail php


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Balises HTML non interprétées dans le mail php
    Bonjour,

    J'envoie un mail en PHP au format HTML et malheureuseuement les balises HTML ne sont interprétées que pour des messages à destination de GMAIL. Pour des adresses FREE et HOTMAIL, les balises HTML ne sont pas interprétés.

    Voici mon code source pour l'envoi des mails :

    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
     
    // function MAIL PHP (format html)
    function send_mail_html($mail_dest, $mail_exp, $sujet, $msg_html)
    {
       // initialisation
       $header = "";
       $contenu = "";
     
       $passage_ligne = PHP_EOL;
     
       // Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
       $header = 'MIME-Version: 1.0' .$passage_ligne;
       $header .= 'Content-type: text/html; charset=iso-8859-1' .$passage_ligne;
     
       // En-têtes additionnels
       $header .= $mail_dest.$passage_ligne;
       $header .= $mail_exp.$passage_ligne;
     
       // Création du message.
      $contenu = $msg_html;
     
      // Envoi du mail
      mail($mail_dest,$sujet,$contenu,$header);	
    }

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    ton entête n'est pas bonne, ou sont les To ? et From ?
    je te déconseil d’utiliser PHP_EOL (d’ailleurs aucun intérêt de la mettre dans un variable plus longue ???), utilise "\r\n"

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tu devrais utilisé une lib dédiée à l'envoie des mail en html plutot que de manipuler tes headers à la main.

    Ex:
    http://framework.zend.com/manual/1.1...tml-mails.html

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour stealth35,

    J'ai cru comprendre que pour certains clients SMTP le '\r\n' était mal interprété et qu'il falait utilisé plutôt '\n'. Comment savoir si je dois utiliser '\n' ou '\r\n' selon l'adresse du destinataire (hotmail, free, ....)

    C'est la raison pour laquelle j'ai utilisé PHP_EOL.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par nordine14 Voir le message
    Bonjour stealth35,

    J'ai cru comprendre que pour certains clients SMTP le '\r\n' était mal interprété et qu'il falait utilisé plutôt '\n'. Comment savoir si je dois utiliser '\n' ou '\r\n' selon l'adresse du destinataire (hotmail, free, ....)

    C'est la raison pour laquelle j'ai utilisé PHP_EOL.
    \r\n est le standard

    pour toi a quoi correspond PHP_EOL ?

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    J'ai finalement modifier mon code après avoir lu plusieurs tuto. Maintenant je n'ai plus de soucis par contre je vois les entêtes dans le mail.

    Voici le résultat du mail :

    -------=a0443c8c8c3372d662e9173c18faaa2c-- Content-Type: text/html; charset="ISO-8859-1" Content-Transfer-Encoding: 8bit
    Pour activer votre compte, cliquez sur le lien suivant : Activation
    -------=a0443c8c8c3372d662e9173c18faaa2c--

    Voici le code :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    // fonction d'affichage du retour à la ligne
    function affichage_correct($mail)
    {
       if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail))
       {
           $passage_ligne = "\r\n";
       }
       else
       {
          $passage_ligne = "\n";
       }
     
       return $passage_ligne;
    }
     
    //fonction header HTML
    function header_mail_html($mail_dest, $mail, $boundary)
    {
       // initialisation
       $passage_ligne = "";
       $mime = "";
       $content = "";
       $header = "";
     
       // retour à la ligne
       $passage_ligne = affichage_correct($mail_dest);
     
       // version mime
       $mime = "MIME-Version: 1.0".$passage_ligne; 
       // content-type
       $content = "Content-Type: multipart/alternative;".$passage_ligne."    boundary=\"$boundary\"".$passage_ligne;
     
       // HEADER DU MAIL
       $header = $mime.$content;
     
       return $header;
    }
     
    // fonction message (format html)
    function message_mail_html($message_html, $message_txt, $mail_dest, $boundary)
    {
       // initialisation
       $message = "";
     
       // retour à la ligne
       $passage_ligne = affichage_correct($mail_dest);
     
       // MESSAGE DU MAIL
       $message = $passage_ligne."--".$boundary."--".$passage_ligne;
       $message .= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
       $message .= "Content-Transfer-Encoding: 8bit".$passage_ligne;
       $message.= $passage_ligne.$message_txt.$passage_ligne;
       $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
       $message .= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
       $message .= "Content-Transfer-Encoding: 8bit".$passage_ligne;
       $message.= $passage_ligne.$message_html.$passage_ligne;
       $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
     
       return $message;
    }	
     
    // function MAIL PHP (format html)
    function send_mail_html($mail_dest, $mail_exp, $sujet, $msg_html, $msg_txt)
    {
       // initialisation
       $header = "";
       $contenu = "";
       // boundary utile pour le content type
       $boundary = "-----=".md5(rand());
     
       // création du header
       $header = header_mail_html($mail_dest, $mail_exp, $boundary);
     
       // Création du message.
       $contenu = message_mail_html($msg_html, $msg_txt, $mail_dest, $boundary);
     
       // Envoi du mail
       mail($mail_dest,$sujet,$contenu,$header);	
    }

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Bonjour,
    en fait j'ai résolu mon problème. Faut pas me prendre la tête avec cette histoire de boundary.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Html non interprété par client mail
    Par ChristopheD dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 17/02/2010, 11h24
  2. Php dans balise html non interpreté
    Par sorcierombre dans le forum Langage
    Réponses: 2
    Dernier message: 29/12/2009, 17h08
  3. [MySQL] Balises HTML non interprétées par MySQL
    Par antow42 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/04/2009, 10h40
  4. HTML non interprété dans lien
    Par kangaxx dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/04/2008, 09h51
  5. [phpBB] Code PHP non interprété dans un thème subsilver
    Par killpilot dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 24/06/2007, 11h42

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