Yii Mailer Library - Symfony Mailer Extension
This extension provides a Symfony Mailer mail solution for Yii framework 2.0.
For license information check the LICENSE-file.
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist yiisoft/yii2-symfonymailer
or add
"yiisoft/yii2-symfonymailer": "~3.0.0"
to the require section of your composer.json.
Usage
To use this extension, simply add the following code in your application configuration:
return [
//....
'components' => [
'mailer' => [
'class' => \yii\symfonymailer\Mailer::class,
'transport' => [
'scheme' => 'smtps',
'host' => '',
'username' => '',
'password' => '',
'port' => 465,
'dsn' => 'native://default',
],
'viewPath' => '@common/mail',
// send all mails to a file by default. You have to set
// 'useFileTransport' to false and configure transport
// for the mailer to send real emails.
'useFileTransport' => false,
],
],
];
or
return [
//....
'components' => [
'mailer' => [
'class' => \yii\symfonymailer\Mailer::class,
'transport' => [
'dsn' => 'smtp://user:pass@smtp.example.com:25',
],
],
],
];
You can then send an email as follows:
Yii::$app->mailer->compose('contact/html')
->setFrom('from@domain.com')
->setTo($form->email)
->setSubject($form->subject)
->send();
Migrating from yiisoft/yii2-swiftmailer
To migrate from the deprecated yiisoft/yii2-swiftmailer to this extension you need to update the application config.
Swiftmailer default transport was the SendmailTransport
, while this extension will default to a NullTransport
(sends no mail). You can use the swiftmailer default like the following:
'mailer' => [
'class' => yii\symfonymailer\Mailer::class,
'transport' => [
'dsn' => 'sendmail://default',
],
],
Security implications of the DSN
While the DSN might seem like a simple way to allow user configurable mailer settings it should be noted that the sendmail transport allows for execution of local executables. If you need to have a user configurable DSN (which is easier to build and more powerful to use than creating a GUI) you should probably disable the sendmail transport. Any user who has the power to configure a DSN essentially has shell access to wherever the code is running.