Fonction mail php et template html

Résolu/Fermé
Rom190686 Messages postés 436 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 20 novembre 2015 - Modifié par Rom190686 le 14/04/2014 à 09:20
Rom190686 Messages postés 436 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 20 novembre 2015 - 14 avril 2014 à 10:32
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 mardi 5 février 2013 Statut Membre Dernière intervention 10 octobre 2022
14 avril 2014 à 09:28
Bonjour,

Comment est codé ton script ?
0
Rom190686 Messages postés 436 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 20 novembre 2015 35
14 avril 2014 à 09:39
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 mardi 5 février 2013 Statut Membre Dernière intervention 10 octobre 2022
14 avril 2014 à 09:47
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 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
14 avril 2014 à 09:55
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 mardi 29 avril 2008 Statut Membre Dernière intervention 20 novembre 2015 35
14 avril 2014 à 09:57
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 mardi 5 février 2013 Statut Membre Dernière intervention 10 octobre 2022
Modifié par diendi le 14/04/2014 à 10:03
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 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
Modifié par mpmp93 le 14/04/2014 à 10:08
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