This package takes a Twig template and generates a Swift mail from this template.
composer require thecodingmachine/swift-twig-mail-template
Once installed, you can start creating an instance of the SwiftTwigMailTemplate
class.
The SwiftTwigMailTemplate
represents a mail template that can generate Swift mails.
Because we consider that an example is better than everything else...
Start by creating your mail template. Your template should have two blocks:
{% block subject %}
Your suject
{% endblock %}
{% block body_html %}
Body with HTML.
{% endblock %}
If you want you can add another block containing your text body. This block is optional since we can get your the text body directly from the html one.
{% block body_text %}
Body without HTML.
{% endblock %}
Also, you can create a mail with a text body only (and no HTML):
{% block subject %}
Your suject
{% endblock %}
{% block body_text %}
Body with text only.
{% endblock %}
Now, let's create a SwiftTwigMailTemplate
instance. This object will generate a SwiftMail
from the twig template.
// We assume that $twigEnvironment is a valid TwigEnvironment instance
$twigSwiftMailTemplate = new SwiftTwigMailTemplate($twigEnvironment, 'path/to/template.twig');
// The renderMail method generates a Swift mail object.
$swiftMail = $twigSwiftMailTemplate->renderMail(['paramKey' => paramValue]);
// We fill the swift mail with additional information
$swiftMail->setFrom('sender@example.com');
$swiftMail->setTo('recipient@example.com');
// We assume that $mailer is a valid Swift_Mailer instance
$mailer->send($swiftMail);
The SwiftTwigMailTemplate
class has been designed with dependency injection in mind. Instances can be easily put in your container for easy reuse.
Furthermore, the SwiftTwigMailTemplate
class shares a lot with the Swift_Mail
class. You can:
- setting the from address
- setting the from name
- setting the to address
- setting the to name
- setting the Bcc address
- setting the Bcc name
- setting the Cc address
- setting the Cc name
- setting the ReplyTo address
- setting the ReplyTo name
- setting the max line size
- setting the priority
- setting the read receip to
- setting the return path