Contributte Mailing
# Content
# Info
The main goal of this package is send emails easily. It has 4 main classes, MailBuilder, MailBuilderFactory, MailSender and MailTemplateFactory.
# Setup
composer require contributte/mailing
extensions:
mailing: Contributte\Mailing\DI\MailingExtension
2
# Configuration
Default configuration looks like this.
mailing:
template:
defaults:
layout: @@default
config:
layout: @@default
2
3
4
5
6
Templating and template options are under key template. At this moment, there's a default theme (https://github.com/leemunroe/responsive-html-email-template/ (opens new window)), simple but good looking. This default default layout is located in this package, you don't need to change anything. Unless you want your own layout.
- The
defaultsshould be untouched and it can be considered as base class. Your theme will be extending the default one. - The
configcan be considered as child class, define your own theme.
Typical configuration would be override the default theme with some extra features.
template:
defaults:
layout: @@default
config:
layout: @@mylayout
2
3
4
5
There are double
@because of NEON resolving.
# Usage
Example is better then 1k words.
# Builder
/** @var Contributte\Mailing\IMailBuilderFactory @inject */
public $mailBuilderFactory;
2
Thanks to MailBuilderFactory we use create MailBuilder to setup and finally send email.
// Builder
$mail = $this->mailBuilderFactory->create();
$mail->setSubject('It is awesome');
$mail->addTo($user->email);
$mail->addBcc($user->email);
$mail->addCcs($user->email);
// Template
$mail->setTemplateFile(__DIR__ . '/../../resources/awesome.latte');
$mail->setParameters([
'username' => $user->logname,
]);
// Sending
$mail->send();
2
3
4
5
6
7
8
9
10
11
12
13
14
15
At first moment it looks the MailBuilder break the SRP, but it's not true. MailBulderFactory creates the MailBuilder
and provides the IMailSender and IMailTemplateFactory. The MailBuilder is just tiny wrapper/builder with enjoyable API.
# Template
Each template has many internal variables:
$_defaults- refer default configuration$_config- refer custom configuration$_mail- refer mail configuration (can overrides subject, from, bcc, etc..)
{layout $_config->layout}
{block #header}
Awesome emails.
{/block}
{block #content}
Hello!
{/block}
2
3
4
5
6
7
8
9
Each template has many blocks, take a look to source.