Fonction mail php et template html

Résolu
Rom190686 Messages postés 436 Date d'inscription   Statut Membre Dernière intervention   -  
Rom190686 Messages postés 436 Date d'inscription   Statut Membre Dernière intervention   -
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 ???
A voir également:

2 réponses

diendi Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Comment est codé ton script ?
0
Rom190686 Messages postés 436 Date d'inscription   Statut Membre Dernière intervention   35
 
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......

0
diendi Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
 
OK.

Le soucis vient de include, voici un peu de lecture : https://www.php.net/manual/fr/function.include.php

Include ne renvoie pas le contenu de ton template dans la variable $msg_html, pour alimenter cette variable, il faut la placer dans ton template.
0
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
Bonjour,

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


par:
$msg_html = file_get_contents('template_mail/mail.php');
0
Rom190686 Messages postés 436 Date d'inscription   Statut Membre Dernière intervention   35
 
Lorsque j'utilise file_get_contents, mes variables sont vides lors de l'affichage.
Quelle autre solution ??
0
diendi Messages postés 73 Date d'inscription   Statut Membre Dernière intervention  
 
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();
0
mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
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+
0