Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

Contributte Mailing

Content

Info

The main goal of this package is to send emails easily. It has 4 main classes, MailBuilder, MailBuilderFactory, MailSender and MailTemplateFactory.

Setup

composer require contributte/mailing
extensions:
	mailing: Contributte\Mailing\DI\MailingExtension

Configuration

Default configuration looks like this:

mailing:
	template:
		defaults:
			layout: @@default
		config:
			layout: @@default

Templating and template options are under key template. At this moment, there's a default theme (https://github.com/leemunroe/responsive-html-email-template/), simple but good looking. This default layout is located in the package, you don't need to change anything. Unless you want your own layout.

  • The defaults should be untouched and it can be considered as base class. Your theme will be extending the default one.
  • The config can be considered as child class, define your own theme.

Typical configuration would override the default theme with some extra features.

template:
	defaults:
		layout: @@default
	config:
		layout: @@mylayout

There are double @ because of NEON resolving.

Usage

Example is better then 1k words.

Builder

/** @var Contributte\Mailing\IMailBuilderFactory @inject */
public $mailBuilderFactory;

Thanks to the MailBuilderFactory, we create the MailBuilder to set up and send the 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();

At first glance, it looks like the MailBuilder breaks the SRP, but that's not the case. The MailBuilderFactory creates the MailBuilder and provides the IMailSender and IMailTemplateFactory. The MailBuilder is just a tiny wrapper/builder with an 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}

Each template has many blocks, take a look at the source.