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 :

Insérer du php dans le corps d'un mail html


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut Insérer du php dans le corps d'un mail html
    Bonjour,

    J'aurais souhaité reprendre la discussion car j'ai pratiquement les mêmes difficultés à insérer une balise php au sein d'un mail php (fonction mail()).
    Le post a été taggé résolu mais je ne vois pas bien, pour ma part, où placer ces balises.
    En fait, pour mon site de vente en ligne, j'envoie à chaque étape de la commande, un mail qui reprends des informations importantes.
    Tout fonctionne parfaitement bien, la boundery fonctionne à merveille, les clients mails reçoivent, selon leurs disposition, un mail en txt ou en html, le tout avec des variables bien prises en compte mais là où je sèche, c'est de pouvoir insérer dans la partie HTML un tableau dynamique contenant une ou plusieurs lignes d'articles (issus de la bdd).


    Voici mon 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
    <?php 
    	$date = $row_rsRappelCommandes['date'];
        $date = preg_replace('!^([0-9]{4})+-([0-9]{2})+-([0-9]{2})$!', '$3/$2/$1', $date);  
        $nom = $row_rsRappelCommandes['nom'];
        $prenom = $row_rsRappelCommandes['prenom']; 
        $expediteur = $row_rsRappelCommandes['email']; 
        $to = $expediteur;
    
    $boundary = "-----=".md5(uniqid(rand()));
    $sujet = "mon_sujet"; 
    $header = "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/alternative; boundary=\"$boundary\"\r\n";
    $header .= "Bcc: info@mondomaine.com\n";
    $header .= 'From: '.$prenom.' '.$nom.' <'.$expediteur.'>'."\r\n"; 
    $header .= "\r\n";
    $msg = "Je vous informe que ceci est un message au format MIME 1.0 multipart/alternative.\r\n";
    $msg .= "--$boundary\r\n";
    $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
    $msg .= "Content-Transfer-Encoding:8bit\r\n";
    $msg .= "\r\n
    Bonjour $prenom $nom,\r\n";
    $msg .= "\r\n";
    $msg .= "--$boundary\r\n";
    $msg .= "Content-Type: text/html; charset=\"ISO-8859-1\"\r\n";
    $msg .= "Content-Transfer-Encoding: 8bit\r\n";
    $msg .= "\r\n";
    $msg .= "<html><body><table><tr><td><div align='center'><a href='http://www.mondomaine.com/accueilfr.php'><img src='http://www.mondomaine.com/img/bandeau2_new.gif' width='650' height='122'></a></div></td>
            </tr>
    	    <tr>
             <td>Bonjour $prenom $nom</td>
            </tr>
    	    <tr>
             <td>c'est ici que je voudrais intégrer un tableau qui est une boucle php do...while contenant éventuellement plusieurs lignes d'articles commandés</td>
            </tr></table></body></html>";
    $msg .= "\r\n";
    $msg .= "--$boundary--\r\n";
    mail($to, $sujet, $msg, $header);
    ?>
    Est ce une syntaxe approximative ?
    Suis je hors sujet?
    Faut-il passer cette boucle sur une variable qui serait elle même exploitable par cette fonction mail.
    Je sais que tout est déjà en php mais si je mets une "enclave php" en mettant une balise de fin et que je reprends ensuite le déroulement normal du mail, j'ai alors un warning de syntaxe (à priori).

    C'est bête, je le sais, mais je sèche.
    Merci de vos réponses.

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 344
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 344
    Billets dans le blog
    17
    Par défaut
    Le msg que tu envoies est stocké dans une variable $msg.
    Remplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td>c'est ici que je voudrais intégrer un tableau qui est une boucle php do...while contenant éventuellement plusieurs lignes d'articles commandés</td>
    Par :

    ... $products étant une variable contenant le tableau HTML de produits à transmettre par email.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $products = '<table>' ;
    foreach ( $cart as $product ) { // Parcours du caddie
        $products .= '<tr>' ;
        $products .= "<td>{$product['name']}</td>" ;
        $products .= "<td>{$product['quantity']}</td>" ;
        $products .= '<td>...</td>' ;
        $products .= '</tr>' ;
    }
    $products .= '</table>' ;

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut
    Alors c'est nettement mieux, mais foreach ne parcours que la première ligne, donc je peux faire pareil avec des variables.
    Mais je cherche pourquoi..

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut
    Merci Séb.
    C'est déjà nettement mieux. J'obtiens une liste en faisant une boucle do while, mais mes opérateurs ne sont pas pris en compte, ils sont simplement renvoyés tels quels.
    Pour le calcul de la TVA, c'est assez génant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $products = $products = '<table>' ;
    do {  // Parcours du caddie
            $products .= '<tr>' ;
    	$products .= "<td>{$row_panier['reference']}</td>" ;
            $products .= "<td>{$row_panier['nom']} {$row_panier['pres']}</td>" ;
            $products .= "<td>{$row_panier['quantite']}</td>" ;
    	$products .= "<td>{round(($row_panier['prixArticle']+$row_panier['trp'])/1.055,2)} €</td>" ;
    	$products .= "<td>...</td>" ;
    	$products .= '</tr>' ;
    } while ($row_panier= mysql_fetch_assoc($panier));
    $products .= '</table>' ;

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    On n'avait pas déjà pointé qu'il ne fallait pas un do/while ?

    Moi je suis plutot partisan du découpage des chaines :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $products = $products = '<table>' ;
     while ($row_panier= mysql_fetch_assoc($panier)) {  // Parcours du caddie
            $products .= '<tr>' ;
    	$products .= '<td>' . $row_panier['reference'] . '</td>' ;
            $products .='<td>'  .$row_panier['nom'] . ' ' . $row_panier['pres'] .'</td>' ;
            $products .= '<td>' . $row_panier['quantite'] .'</td>' ;
    	$products .= '<td>' . round(($row_panier['prixArticle']+$row_panier['trp'])/1.055,2) . ' €</td>' ;
    	$products .= "<td>...</td>" ;
    	$products .= '</tr>' ;
    }
    $products .= '</table>' ;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut
    A première vue, il manque la première ligne d'articles, mais les opérateurs fonctionnent...

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

Discussions similaires

  1. Insérer un Jtable dans le corps d'un mail avec javamail
    Par Alibel dans le forum Général Java
    Réponses: 2
    Dernier message: 27/03/2014, 15h32
  2. Réponses: 3
    Dernier message: 07/04/2009, 18h39
  3. [PHP Link Directory] Insérer du php dans un fichier .tpl
    Par deleter23 dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 10/12/2006, 20h52
  4. [phpBB][2] Comment insérer du PHP dans un fichier .tpl
    Par huynhi dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 23/10/2006, 14h29
  5. [HTML] insérer un \n dans le corps d'un mail
    Par lilou77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 20/10/2006, 13h59

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