The Email package provides an integration with PHPMailer for sending emails.
composer require charcoal/email
For Charcoal projects, the service provider can be registered from your configuration file:
{
"service_providers": {
"charcoal/email/service-provider/email": {}
}
}use Charcoal\Email\ServiceProvider\EmailServiceProvider; use Pimple\Container; $container = new Container(); $container->register(new EmailServiceProvider()); $email = $container['email']; $email->setData([ 'from' => '"Company inc." <[email protected]>', 'bcc' => '[email protected]', 'to' => [ '[email protected]', '"Some guy" <[email protected]>', [ 'name' => 'Other guy', 'email' => '[email protected]', ], ], 'reply_to' => [ 'name' => 'Jack CEO', 'email' => '[email protected]' ], 'subject' => $this->translator->trans('Email subject'), 'campaign' => 'Campaign identifier', 'template_ident' => 'foo/email/default-email' 'attachments' => [ 'foo/bar.pdf', 'foo/baz.pdf', ], ]); // Dispatch immediately: $email->send(); // Alternately, dispatch at a later date using the queue system: $email->queue('in 5 minutes');
The entire email system can be configured from the main app config, in the email config key.
{
"email": {
"smtp": true,
"smtp_hostname": "smtp.example.com",
"smtp_port": 25,
"smtp_security": "tls",
"smtp_username": "[email protected]",
"smtp_password": "password",
"default_from": "[email protected]",
"default_reply_to": "[email protected]",
"default_track": false,
"default_log": true
}
}All email services can be quickly registered to a service container with \Charcoal\Email\ServiceProvider\EmailServiceProvider.
Provided services:
| Service | Type | Description |
|---|---|---|
Email[1] |
An email object (factory). | |
| email/factory | FactoryInterface[2] |
An email factory, to create email objects. |
Notes:
- [1]
\Charcoal\Email\Email. - [2]
Charcoal\Factory\FactoryInterface.
Also available are the following helpers:
| Helper Service | Type | Description |
|---|---|---|
| email/config | EmailConfig[3] |
Email configuration. |
| email/view | ViewInterface[4] |
The view object to render email templates ($container['view']). |
Notes:
- [3]
\Charcoal\Email\EmailConfig. - [4]
\Charcoal\View\ViewInterface.