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 :

Function mail() [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Par défaut Function mail()
    Bonjour,

    Dans le cadre d'un développement, j'ai besoin d'envoyer des mail au format HTML via la fonction mail() de PHP, mon souci est que le mail est reçu en BRUT c'est à dire que je vois le boundary et la source HTML au lieu d'être afficher en HTML.

    Avant j’utilisais une fonction basé sur du SMTP, mais pour ce projet on me demande d'utiliser mail()

    Voici ma fonction
    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
     
    function sendEmail($msg,$reply,$subject){
        global $pdo;
     
        /** Intégration des données dans le gabarit HTML **/
        $mail_message = new OfilTpl('mods/Contacts/tpl',"contact-mail");
        $mail_message->addVar('MSG',stripslashes($msg));
        $mail_message->addVar('FROM',$reply);
     
        $h = strftime("%H",time());
        $heure = ($h+2);
     
        $passage_ligne = "\r\n";
     
        $mail_message->addVar('LE',strftime("%d/%m/%Y à ".$heure.":%M"));
     
        /** Récupère le format HTML du message **/
        $html_message = $mail_message->_getHTML(); // Donne <html><head></head><body>$msg</body></html>
        $message_txt = $msg; // Format texte
     
        //=====Création de la boundary
        $boundary = "-----=".md5(rand());
     
        /** Paramètrage du mail **/
        $sujet = $subject;
        $destinataire = "lui@domaine.com";
     
        //=====Création du header de l'e-mail.
        $header = "From: \"Moi\"<moi@domain.be>".$passage_ligne;  // moi@domain.be est remplacer par mon adresse email
        $header .= "X-Mailer: PHP/".phpversion().$passage_ligne;
        $header .= "Reply-To: ".$reply."\n";
        $header .= "MIME-Version: 1.0".$passage_ligne;
        $header .= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
        //==========
     
        //=====Création du message.
        $message = $passage_ligne."--".$boundary.$passage_ligne;
     
        //=====Ajout du message au format texte.
        $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;
     
        //=====Ajout du message au format HTML
        $message.= "Content-Type: text/html; charset=\"iso-8859-1\"".$passage_ligne;
        $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
        $message.= $passage_ligne.$html_message.$passage_ligne;
        //==========
     
        if(mail($destinataire,utf8_decode($sujet),$message,$headers))
        {
            //echo "L'email a bien été envoyé.";
            return true;
        }
        else
        {
            //echo "Une erreur c'est produite lors de l'envois de l'email.";
            return false;
        }
    }
    L'émail est bien envoyé mais voici ce que ça donne
    -------=a28b4955e5885e237e0ecd2265755d4b
    Content-Type: text/plain; charset="iso-8859-1"
    Content-Transfer-Encoding: 8bit

    Bonjour,<br/><br/>Vous avez reçus une nouvelle demande de contact via le site RECUPère<br/><br/><i>-------- Début du message --------<br/><br/>mon quisième test<br/><br/>-------- Fin du message --------</i><br/><br/>Vous pouvez répondre à ce message en cliquant sur le bouton répondre de votre logiciel de messagerie.<br/><br/>Bien à vous<br/>Auto-Message...

    -------=a28b4955e5885e237e0ecd2265755d4b
    Content-Type: text/html; charset="iso-8859-1"
    Content-Transfer-Encoding: 8bit

    <html>
    <head>
    <title>Demande de contact</title>
    </head>
    <body>
    <table style="width:90%;margin: 0 auto;border-collapse:collapse;border:solid 1px #aaa;background-color:#fff;">
    <tr>
    <th style="padding:15px;background-color:#695C56;color:#fff;">Contact depuis le site</th>
    </tr>
    <tr>
    <td style="padding:15px;">
    Venant de : lui@domaine.com<br />
    Le : 26/06/2018 Ã 11:50
    </td>
    </tr>
    <tr>
    <td style="padding:15px;">Bonjour,<br/><br/>Vous avez reçus une nouvelle demande de contact via le site<br/><br/><i>-------- Début du message --------<br/><br/>mon quisième test<br/><br/>-------- Fin du message --------</i><br/><br/>Vous pouvez répondre à ce message en cliquant sur le bouton répondre de votre logiciel de messagerie.<br/><br/>Bien à vous<br/>Auto-Message...</td>
    </tr>
    </table>
    </body>
    </html>
    Je suppose un problème peux-être au niveau des entête, mais je n'arrive pas à déboguer ça.

    D'avance merci pour votre participation
    Bien à vous

  2. #2
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Hello,

    le Content-type doit indiquer du HTML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Content-type: text/html;

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Par défaut
    Bonjour et merci pour votre participation.

    Le Content-Type est en text/plain pour la version texte et en text/html pour la version html

    Pour pas que le mail parte en spam on me demande de faire les 2 versions
    On me dit aussi d'intégrer dans le header la date, mais vois pas comment.

    Je ne vois donc pas le problème ou plutôt ne comprend pas, dans le doute j'ai tout mit en text/html, mais ça ne change rien du tout

    Bien à vous

  4. #4
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    J'avoue ne pas connaitre assez bien la fonction mail() de php, mais je sais que le Content type se définie dans le header... ( http://php.net/manual/fr/function.mail.php )
    Dans ton header tu définie un content type multipart/alternative;
    C'est là tu dois le modifier.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    La structure a l'air ok Sauf peut-être le fait qu'il n'y ait pas de boundary à la fin du mail, je ne suis pas sûre de si ça a un impact.

    @Geoffrey : non c'est normal : dans le header il indique qu'il y a plusieurs formats et dans le corps il indique le type de chaque format.

    Juste à titre indicatif :Tu es vraiment obligé d'utiliser mail ? PhpMailer fait plein de trucs chouettes tout seul, notamment la gestion d'un message HTML et un message texte par Body et AltBody.
    Et tu es vraiment en PHP 5.2 ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 274
    Par défaut
    Le boundary de fin ne change rien

    Je suis bien en PHP 5.2

    PhpMailer le fait en smtp, et malheureusement le responsable de projet m'oblige de le faire sans

  7. #7
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Citation Envoyé par Celira Voir le message
    @Geoffrey : non c'est normal : dans le header il indique qu'il y a plusieurs formats et dans le corps il indique le type de chaque format.
    Ok au temps pour moi, c'est pour ça qu ej'ai précisé que je ne connaissait pas trop cette fonction, car je sentais bien la subtilité à ce niveau

    J'aurai appris quelque chose

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

Discussions similaires

  1. [WAMP] Warning: mail() [function.mail]
    Par Kenshin86 dans le forum Apache
    Réponses: 2
    Dernier message: 23/05/2009, 01h01
  2. [MySQL] Php : problème avec function mail()
    Par totoAussi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/05/2009, 19h45
  3. Réponses: 3
    Dernier message: 19/03/2009, 19h21
  4. Probleme de la function mail sur lampp
    Par Programmeur php dans le forum Réseau
    Réponses: 1
    Dernier message: 04/12/2008, 17h57
  5. [PHPMailer] Bcc et function mail non instancié
    Par hugo69 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 10/12/2007, 15h23

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