LexikMailerBundle, gérez vos templates de mails en base de données

N’avez-vous jamais eu un client qui vous demande régulièrement de modifier le contenu des emails envoyés depuis le site ? Ou mieux un client qui souhaite lui même modifier le contenu des emails ? Dans ce genre de cas le plus simple est souvent de stocker le contenu modifiable dans la base de données, c’est ce que permet le LexikMailerBundle, une gestion de vos templates de mail depuis la base de données. Ces templates supportent la syntaxe Twig, vous pouvez ainsi facilement passer des paramètres lors de la génération du mail. Le bundle fournit deux CRUD I18N, un pour gérer les templates de mail et un second pour gérer les templates des layouts.

En effet chaque template de mail peut être utilisé seul ou être décoré avec un layout. Pour créer un email à partir d’un template il suffit d’utiliser un service qui va se charger de créer une instance de Swift_Message prête à être envoyée avec le service d’envoi de mail de Symfony. Ce service prend évidement en paramètre la référence du template, le destinataire mais aussi une liste de paramètres à afficher dans le template ainsi que la locale (si besoin est).

Voici un exemple rapide de génération d’un mail :
Supposons que nous avons créé en base de données un template dont la référence est hello-template avec comme contenu Hello {{name}} !.
Le code PHP correspondant serait :

<?php
$to = 'dude@email.com';
$params = array('name' => 'dude');
$message = $container->get('lexik_mailer.message_factory')->get('hello-template', $to, $params);
 
$container->get('mailer')->send($message);

Pour plus d’information vous pouvez voir la documentation du bundle ici.

Partagez cet article