The Email package provides an integration with PHPMailer for sending emails.
composer require charcoal/emailFor 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." <company.inc@example.com>',
'bcc' => 'shadow@example.com',
'to' => [
'recipient@example.com',
'"Some guy" <someguy@example.com>',
[
'name' => 'Other guy',
'email' => 'otherguy@example.com',
],
],
'reply_to' => [
'name' => 'Jack CEO',
'email' => 'jack@example.com'
],
'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": "user@example.com",
"smtp_password": "password",
"default_from": "webproject@example.com",
"default_reply_to": "webproject@example.com",
"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.