Fonction mail php et template html

Résolu
Bonjour à tous,

Dans le but de relancer mes clients automatiquement, j'ai développé un script d'envoi de mail auto.

Tout fonctionne parfaitement à l'exception de la personnalisation du mail. Je m'explique...

Dès lors que je souhaite ajouter une variable $nom ou $prenom dans mon mail pour le personnaliser, j'utilise include pour appeler mon template, et là, le corps de mon mail retourne "1"... Tout le texte à disparu.

Que faire ?

D'où vient ce problème ???

2 réponses

  1. une classe qui contient la fonction mail, une page php pour executer le script et un fichier html qui contient le template : extrait

    public function envoiEmail($destinataire, $sujet_mail) {
    foreach ($destinataire as $value_destinataire) {

    $destimail = $value_destinataire['email'];
    $nom = $value_destinataire['lastname'];
    $prenom = $value_destinataire['firstname'];

    $ligne = "\n";

    $msg_text = "message texte";
    $msg_html = include('template_mail/mail.php');

    etc......

    1. Bonjour,

      remplacer:
      $msg_html = include('template_mail/mail.php');


      par:
      $msg_html = file_get_contents('template_mail/mail.php');
    2. Lorsque j'utilise file_get_contents, mes variables sont vides lors de l'affichage.
      Quelle autre solution ??
    3. 2 solutions :

      1/ Inclure ta variable dans ton template comme indiqué ci-dessus

      2/ Passer par une bufferisation de sortie :

      ob_start();
      include('template_mail/mail.php');
      $msg_html = ob_get_clean();
      
    4. variables, mais des "étiquettes", exemple:

      "Bonjour Monsieur #NOM#,
      Nous vous informons que le véhicule #IMMATRICULE# est dans nos locaux depuis #DATE#"

      Ca c'est le contenu qui va dans $msg_html

      ensuite, vous faites un str_replace, par exemple:

      $msg_html = str_replace("#NOM#", "ALBERTINI", $msg_html);

      ...et de même pour toutes les "étiquettes"

      et vérifiez par:
      echo $msg_html; // mettre en commentaire si OK


      Voici un search/replace:

      $searchReplace = array(
          '#civilite#' => 'Mr',
          '#NOM#' => 'ALEXANDRIN',
          '#Prenom#' => 'Albert',
          '#Ad1#' => '98 rue Des Poêtes',
          '#cp#' => '92260',
          '#Ad2#' => null,
          '#ville#' => 'LA CELLE SAINT CLOUD',
          '#tel#' => '0143556677'
          );
       
      $search  = array_keys($searchReplace);
      $replace = array_values($searchReplace);
      
      $myFile = file_get_contents('template_mail/mail.php');
       
      $msg_html str_replace($search, $replace, $myFile);


      Ici le $searchReplace est un tableau associatif. A vous de l'adapter avec des variables alimentées par votre base de données.

      A+