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
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
A voir également:
- Fonction mail php et template html
- Fonction si et - Guide
- Yahoo mail - Accueil - Mail
- Publipostage mail - Accueil - Word
- Editeur html - Télécharger - HTML
- Windows live mail - Télécharger - Mail
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
14 avril 2014 à 09:28
Bonjour,
Comment est codé ton script ?
Comment est codé ton script ?
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
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......
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
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.
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.
mpmp93
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
14 avril 2014 à 09:55
14 avril 2014 à 09:55
Bonjour,
remplacer:
par:
remplacer:
$msg_html = include('template_mail/mail.php');
par:
$msg_html = file_get_contents('template_mail/mail.php');
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
14 avril 2014 à 09:57
Lorsque j'utilise file_get_contents, mes variables sont vides lors de l'affichage.
Quelle autre solution ??
Quelle autre solution ??
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
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 :
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();
mpmp93
Messages postés
6648
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
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:
...et de même pour toutes les "étiquettes"
et vérifiez par:
Voici un search/replace:
Ici le $searchReplace est un tableau associatif. A vous de l'adapter avec des variables alimentées par votre base de données.
A+
"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+