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 :

Envoi d'email avec variables


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant - Webmarketing
    Inscrit en
    Avril 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant - Webmarketing
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2013
    Messages : 25
    Points : 33
    Points
    33
    Par défaut Envoi d'email avec variables
    Bonjour,
    N'étant pas un habitué du forum, si vous jugez qu'il faut déplacer ma question, je vous en serai reconnaissant.

    Voilà, j'ai crée du code PHP pour envoyer des emails, en y introduisant des fichiers HTML, sans aucune difficulté. Ces fichiers sont appelés par file_get_contents() ou file()...

    La difficulté est apparue lorsque j'ai introduit des variables dans le fichier HTML, déclarées préalablement dans le code PHP.
    Voici un exemple, dans lequel j'essaie d'envoyer dans le HTML la variable $nom, mais j'obtiens ceci : Bonjour "$nom"

    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
     
    <?php   
     
    /* Déclaration de variables */
    $Fic_Html = 'mailing2.htm';
    $Societe = 'ma_ste';
    $Expediteur ='contact@mon_site.fr';
    $nom = 'invité';
     
    //== HEADERS DU MAIL
    //============================
    $headers = 'MIME-Version: 1.0'."\n";
    $headers .= 'Content-type:text/html; charset=ISO-8859-1'."\r\n";
    $headers .= 'From: '.$Societe.' <'.$Expediteur.'>'."\n";
    $headers .= "\r\n";        
     
    //== MESSAGE HTML ==
        $msg ='"';                              //== guillemets pour encapsuler le code HTML ==
        $msg .= file_get_contents($Fic_Html);   //== essayé aussi: file($Fic_Html) == 
        $msg .='"';                             //== guillemet de fermeture du code HTML
        $msg .= "\r\n";
     
        //== les guillements de début et de fin c'est pour la forme mais ils ne changent rien
        //== bien au contraire, ils apparaissent à l'affichage.
     
    //== FEED BACK D\'ENVOI DU MAIL 
    //============================
     
    //== if(mail($dest, $objet, $msg, $headers)) 
        echo $msg."<br />";
    ?>
    Pourtant si je copie directement le contenu du fichier HTML dans la variable $msg, cela fonctionne :
    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
     
    <?php   
     
    /* Déclaration de variables */
    $Fic_Html = 'mailing2.htm';
    $Societe = 'ma_ste';
    $Expediteur ='contact@mon_site.fr';
    $nom = 'invité';
     
    //== HEADERS DU MAIL
    //============================
    $headers = 'MIME-Version: 1.0'."\n";
    $headers .= 'Content-type:text/html; charset=ISO-8859-1'."\r\n";
    $headers .= 'From: '.$Societe.' <'.$Expediteur.'>'."\n";
    $headers .= "\r\n";        
     
    //== MESSAGE HTML ==
    $msg ="
        <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
        <html>
        <head>
        <meta content='text/html; charset=ISO-8859-1' http-equiv=Content-Type>
            <style>
            span.texte2 { font-family: verdana, arial; font-size: 9.0pt; color:#666666; text-decoration:none;}
            a.lien1 { list-style-type:none; font-family: verdana, arial; font-size: 9.0pt; color: #0088D1; text-decoration: underline;}
            a.lien1:link {}
            a.lien1:hover { text-decoration: underline;}    
        </style>
        </head>
        <body bgColor='#ffffff'>
        <div align=center>
            <table cellpadding=0 width=700pt align=center>
                <tr>
                <td align=right style='border-style:none;'>
                    <div style='margin:0 20px 5px 0; text-align:center;'>
                        <span class='texte2'>Bonjour <b>".$nom."</b>, <i>si vous ne parvenez pas à lire cet email, consultez
                        <a class='lien2' href='http://www.mon_site.fr'> la version en ligne</i></a></span>
                    </div>
                </td>
                </tr>        
            </table> 
        </div>  
        </body>
        </html>";
    $msg.="\r\n";
     
    //== FEED BACK D\'ENVOI DU MAIL 
    //============================
     
    //== if(mail($dest, $objet, $msg, $headers)) 
        echo $msg."<br />";
    ?>
    Ne vous moquez pas, c'est certainement basic comme question pour vous, mais étant débutant, j'ai beau me documenter, impossible de trouver une solution.
    Alors MERCI à vous de bien vouloir me donner un peu de votre temps.

    Cdt,
    Raphaël

  2. #2
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Salut,

    Normal qu'il ne te remplace pas les variables, le file_get_contents les interprete comme du text.
    Si tu veut mettre des variables dans un template tu peut faire un truc de ce style :

    Template :
    Code html : 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
     
    <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>
        <html>
        <head>
        <meta content='text/html; charset=ISO-8859-1' http-equiv=Content-Type>
            <style>
            span.texte2 { font-family: verdana, arial; font-size: 9.0pt; color:#666666; text-decoration:none;}
            a.lien1 { list-style-type:none; font-family: verdana, arial; font-size: 9.0pt; color: #0088D1; text-decoration: underline;}
            a.lien1:link {}
            a.lien1:hover { text-decoration: underline;}    
        </style>
        </head>
        <body bgColor='#ffffff'>
        <div align=center>
            <table cellpadding=0 width=700pt align=center>
                <tr>
                <td align=right style='border-style:none;'>
                    <div style='margin:0 20px 5px 0; text-align:center;'>
                        <span class='texte2'>Bonjour <b>[#NOM#]</b>, <i>si vous ne parvenez pas à lire cet email, consultez
                        <a class='lien2' href='http://www.mon_site.fr'> la version en ligne</i></a></span>
                    </div>
                </td>
                </tr>        
            </table> 
        </div>  
        </body>
        </html>

    Mail :
    Code PHP : 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
     
    /* Déclaration de variables */
    $Fic_Html = 'mailing2.htm';
    $Societe = 'ma_ste';
    $Expediteur ='contact@mon_site.fr';
    $nom = 'invité';
     
    //== HEADERS DU MAIL
    //============================
    $headers = 'MIME-Version: 1.0'."\n";
    $headers .= 'Content-type:text/html; charset=ISO-8859-1'."\r\n";
    $headers .= 'From: '.$Societe.' <'.$Expediteur.'>'."\n";
    $headers .= "\r\n";        
     
    //== MESSAGE HTML ==
    $msg = file_get_contents($Fic_Html);
    $msg = str_replace('[#NOM#]', $nom, $msg);

    De plus les guillemets doubles ne servent à rien étant donné que ton file_get_contents te retourne une chaine


    Les boutons et existent, servez-vous en

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant - Webmarketing
    Inscrit en
    Avril 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant - Webmarketing
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2013
    Messages : 25
    Points : 33
    Points
    33
    Par défaut Résolu : envoi d'emails avec variables
    Un grand merci à toi, amoiraud.
    J'avoue que je ne connaissais pas cette solution.

    Autrement, concernant la méthode que j'utilise pour envoyer des emails avec des variables, qu'est-ce que tu en penses ?
    Existe-il d'autres méthodes plus appropriées ?

    Encore merci,
    Raphaël

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

Discussions similaires

  1. [C#] pb avec l'envoie d'Email avec SMTP
    Par hassanibi dans le forum Windows Forms
    Réponses: 22
    Dernier message: 16/04/2007, 16h22
  2. Envoi d'email avec awk
    Par agougeon dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 20/06/2006, 07h22
  3. Problème d'envoi d'email avec Jmail
    Par Mat5725 dans le forum ASP
    Réponses: 2
    Dernier message: 09/12/2005, 15h34
  4. Envoie d'email avec le TIdSMTP + TGauge
    Par Teufa dans le forum Web & réseau
    Réponses: 5
    Dernier message: 10/08/2005, 14h23
  5. Envoie de EMail avec un formulaire
    Par LibrairieSI dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 28/02/2005, 14h31

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