yiisoft / yii2-symfonymailer
The SymfonyMailer integration for the Yii framework
Fund package maintenance!
Open Collective
yiisoft
Tidelift
Installs: 383 468
Dependents: 33
Suggesters: 2
Security: 0
Stars: 29
Watchers: 8
Forks: 18
Open Issues: 6
Type:yii2-extension
Requires
- php: >=7.4.0
- symfony/mailer: >=5.4.0
- yiisoft/yii2: >=2.0.4
Requires (Dev)
- captainhook/captainhook: ^5.10
- captainhook/plugin-composer: ^5.3
- phpunit/phpunit: 9.5.10
- symplify/easy-coding-standard: ^10.1
- vimeo/psalm: ^4.22
README
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.