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." <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
.