MtMail handles common activities surrounding sending e-mail from applications, mainly creating messages from templates, and sending them through transport adapters.
- factory for creating e-mail messages
- factory for e-mail transport adapters, service for one-line dispatch
- rendering templates from
phtml
files, usingLaminas\View
andPhpRenderer
- rendering templates with layouts
- plugins for various common tasks: from setting default headers to generating plaintext version of HTML message
- plugin support via dedicated plugin managers
Installation is supported via Composer:
$ composer require mtymek/mt-mail
By default MtMail doesn't require any extra configuration. It will use Laminas\View
to render
templates accessible by your application.
Creating message from controller:
$mailService = $this->getServiceLocator()->get(\MtMail\Service\Mail::class);
$headers = [
'to' => '[email protected]',
'from' => '[email protected]',
];
$variables = [
'userName' => 'John Doe',
];
$message = $mailService->compose($headers, 'application/mail/welcome.phtml', $variables);
This snippet will create a message, compose it with $headers
and HTML body
rendered from welcome.phtml
template (injected with $variables
array).
In order to give your e-mails common layout, you have to enable "Layout" plugin and tell it where to look for layout template:
return [
'mt_mail' => [
'composer_plugins' => [
'Layout',
],
'layout' => 'application/mail/layout.phtml',
],
];
For more info about composing e-mail messages, check [the documentation](doc/Composing messages.md). You can also check [documentation for plugins](doc/Composer Plugins.md).
Update your application config:
return [
'mt_mail' => [
'transport' => \Laminas\Mail\Transport\Smtp::class,
'transport_options' => [
'host' => 'some-host.com',
'connection_class' => 'login',
'connection_config' => [
'username' => 'user',
'password' => 'pass',
'ssl' => 'tls',
],
],
],
];
Add following code to your controller:
// create and configure message
$message = new Message();
$message->addTo('[email protected]');
// ...
// send!
$mailService = $this->getServiceLocator()->get(\MtMail\Service\Mail::class);
$mailService->send($message);
For more info on sending e-mails, check [the documentation](doc/Sending messages.md).