Developers
Emails
Sending an email manually
$variables = [
'user' => 'John'
];
Craft::$app->getMailer()
->composeFromKey('email_key', $variables)
->setTo('[email protected]')
->send();
The email will automatically be modified according to its config before it's sent.
Modify email variables
You may modify variables passed to any email using this event :
Event::on(
Mailer::class,
Mailer::EVENT_BEFORE_PREP,
function (MailEvent $e) {
$e->message->variables['name'] = 'value';
}
);
Emails shots
Define email sources
Create a new class for the source :
<?php
use Ryssbowh\CraftEmails\interfaces\EmailSourceInterface;
use craft\base\Component;
class MyEmailSource extends Component implements EmailSourceInterface
{
/**
* @inheritDoc
*/
public function getName(): string
{
return 'My source';
}
/**
* @inheritDoc
*/
public function getHandle(): string
{
return 'my_source';
}
/**
* @inheritDoc
*/
public function getEmails(): array
{
return [
'[email protected]' => 'Hello'
];
}
}
And register it on the event :
Event::on(
EmailSourceService::class,
EmailSourceService::EVENT_REGISTER,
function (RegisterEmailSourcesEvent $e) {
$e->add(new MyEmailSource);
}
);
Email sources must implement EmailSourceInterface. Exceptions will be thrown when registering sources which handles are already defined.
Variables
You can define variables manually before the shot is sent, they will be passed to the email :
Event::on(
EmailShotsService::class,
EmailShotsService::EVENT_BEFORE_SEND,
function (SendEmailShotEvent $e) {
$e->shot->variables = [
'var' => 'value'
];
}
);
For global variables, refer to the Craft documentation