illarra / email-bundle
Create beautiful emails in Symfony2
Installs: 3 826
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 0
Open Issues: 3
Type:symfony-bundle
Requires
- php: >=5.4
- inlinestyle/inlinestyle: ~1.0
- swiftmailer/swiftmailer: >=4.2.0,<5.1-dev
- twig/twig: >=1.11.0,<2.0
Requires (Dev)
- symfony/framework-bundle: >=2.3,<2.4-dev
- symfony/swiftmailer-bundle: 2.3.*
This package is not auto-updated.
Last update: 2024-05-06 12:58:48 UTC
README
This bundle let's you create HTML emails with inline styles using Twig as the template language. It's made of two services:
- Renderer: Updates the given Swift_Message using a Twig layout/template and css.
- Mailer: It's a wrapper for the default "@mailer" service which let's you use profiles to tell who is sending the email.
$message = \Swift_Message::newInstance(); $this->get('illarra.email.renderer')->updateMessage( $message, 'AcmeEmailBundle:Email:layout.html.twig', 'AcmeEmailBundle:Email:signup/eu.html.twig', '@AcmeEmailBundle/Resources/assets/css/email.css', [ 'name' => 'Bartolo', ] ); $message->setTo(['bartolo@example.com' => 'Bartolo']); $this->get('illarra.email.mailer')->send('maritxu', $message);
Configuration
config.yml
:
illarra_email: # Force double quotes in HTML tag attributes, <p style=''> => <p style=""> # This is usefull for Mandrill or other service which needs double quote attributes force_double_quotes: false # Generate plain text message from HTML version generate_plain: false # See "Renderer" layout_var: 'layout' subject_var: 'subject' # See "Mailer" profiles: ~
Renderer
$renderer->updateMessage($swift_message, $layout, $template, $css, $data);
Layout & template
Both layout & template need a Twig path. Layout and templates are separated, so that is easier to maintain lot's of templates.
This is the minimum a $template
needs:
{% extends layout %} {% block subject %}Welcome {{ name }}!{% endblock %}
Note that layout in the extends
tag is a variable which corresponds to the
$layout
given in the updateMessage() method. The subject
block is used to
generate the email subject. Both are required.
The names of the layout variable and the subject block can be changed in
config.yml
:
illarra_email: layout_var: 'layout' subject_var: 'subject'
CSS
You can use the @AcmeBundle/path/my.css
notation to locate your css. This css file
will be used to add inline styles to the generated HTML.
Mailer
$mailer->send($profile, $swift_message);
Profiles are defined in config.yml
:
illarra_email: profiles: maritxu: from: { maritxu@example.com: Maritxu } bartolo: from: { no-reply@example.com: Unknown } reply_to: { bartolo@example.com: Bartolo }
Define the From and ReplyTo options like in a Swift Message:
{'email': 'name'}
. You can define multiple emails in the From parameter, all
of them will be visible to the addressee, but only the first one will be the
actual Sender.