adesigns/email-template-bundle
Symfony2 bundle for managing reusable email templates with Twig blocks (from, subject, body). Load a template with data via a service, then send rendered emails (e.g., registration, password reset) using SwiftMailer.
Installation:
composer require sfk/email-template-bundle:dev-master
Add to AppKernel.php:
new Sfk\EmailTemplateBundle\SfkEmailTemplateBundle(),
First Template: Create a Twig template at:
src/[YourBundle]/Resources/views/[Emails]/template_name.html.twig
Extend the base template:
{% extends 'SfkEmailTemplateBundle::email.html.twig' %}
{% block subject %}Your Subject{% endblock %}
{% block body %}Your HTML content{% endblock %}
First Send:
Inject SfkEmailTemplateBundle\Service\EmailService and use:
$emailService->send('template_name', ['first_name' => 'John']);
Dynamic Templates:
email_templates table) with name, subject, and body fields.$template = $this->getDoctrine()->getRepository('AppBundle:EmailTemplate')->findOneBy(['name' => 'welcome']);
$emailService->sendFromDb($template, ['user' => $user]);
Reusable Components:
Resources/views/[Emails]/_partials/ (e.g., _header.html.twig).{% include '[Emails]/_partials/_header.html.twig' %}
Controller Integration:
EmailService:
use Sfk\EmailTemplateBundle\Service\EmailService;
class UserController extends Controller {
public function registerAction(Request $request, EmailService $emailService) {
// ... logic ...
$emailService->send('user_registered', ['first_name' => $user->firstName]);
}
}
Queueing Emails:
$emailService->queue('user_registered', ['user' => $user]);
Template Pathing:
[Emails]/ subdirectory (case-sensitive).php bin/console debug:config sfk_email_template
Caching:
php bin/console cache:clear
Database Templates:
body field if storing raw Twig (use twig_escape_filter in templates).Character Encoding:
config.yml:
sfk_email_template:
charset: UTF-8
sfk_email_template:
debug: true
symfony/mailer with null transport):
services:
Symfony\Component\Mailer\Transport\NullTransport: ~
Custom Base Template:
Override the base template (email.html.twig) in your bundle’s Resources/views/SfkEmailTemplateBundle/.
Event Listeners:
Extend functionality via events (e.g., email.send):
// src/EventListener/EmailListener.php
public function onSend(EmailEvent $event) {
$event->setSubject('PREFIX: ' . $event->getSubject());
}
Swiftmailer Integration: Configure custom Swiftmailer settings:
sfk_email_template:
swiftmailer:
spool: { type: file, path: "%kernel.cache_dir%/swiftmailer/spool" }
Attachments:
Use Swiftmailer’s addAttachment via the service:
$emailService->send('template_name', ['user' => $user])
->addAttachment($filePath, 'filename.pdf');
How can I help you explore Laravel packages today?