navatech / yii2-email-manager
1.2.0
2021-04-08 08:04 UTC
Requires
- php: >=5.6.0
- baibaratsky/yii2-serialized-attributes-behavior: ~1.1
- mailgun/mailgun-php: ^3.4.0
- navatech/yii2-navatech-base: ^1.0
- navatech/yii2-roxymce: ^2.0
- php-http/guzzle6-adapter: *
- react/event-loop: ~0.4
- yiisoft/yii2: ~2.0.4
- yiisoft/yii2-swiftmailer: ~2.0.0 | ~2.1.0
- yiisoft/yii2-twig: ^2.4.1
Suggests
- cboden/ratchet: to use loop instead of for-cycle in daemon
- navatech/yii2-setting: 1.0.*
README
Composer
安装此扩展的首选方式是通过 composer。
运行以下命令:
php composer.phar require --prefer-dist navatech/yii2-email-manager "@dev"
或者
"navatech/yii2-email-manager": "@dev"
将以下内容添加到您的 composer.json
文件的 require 部分。
迁移
运行迁移
php yii migrate --migrationPath=@vendor/navatech/yii2-email-manager/src/migrations
配置
简单配置
'components' => [
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'useFileTransport' => false,
'host' => 'smtp.gmail.com',
'username' => 'test@gmail.com',
'password' => '12345678',
'port' => '587',
'encryption' => 'TLS',
],
'emailManager' => [
'class' => '\navatech\email\EmailManager',
'defaultTransport' => 'yiiMailer',
'resendAfter' => 5,//resend after 5 mins if stuck
'tryTime' => 3,//max try time resend
'transports' => [
'yiiMailer' => [
'class' => '\navatech\email\transports\YiiMailer',
],
/*
'mailGun' => [ //Not required
'class' => '\navatech\email\transports\MailGun',
'apiKey' => 'xxx',
'domain' => 'our-domain.net',
],
*/
],
],
],
'modules' => [
'mailer' => [
'class' => 'navatech\email\Module',
'cleanAfter' => 30//clean after days
],
]
高级配置
首先您需要安装 navatech/yii2-setting
,在设置模块中创建 5 条记录
smtp_host
(值:smtp.gmail.com
)smtp_user
(值:test@gmail.com
)smtp_password
(值:12345678
)smtp_port
(值:587
)smtp_encryption
(值:TLS
)
'components' => [
'mailer' => [
'class' => '\navatech\email\swiftmailer\Mailer',
],
'emailManager' => [
'class' => '\navatech\email\components\EmailManager',
'defaultTransport' => 'yiiMailer',
'resendAfter' => 5,//resend after 5 mins if stuck
'tryTime' => 3,//max try time resend
'transports' => [
'yiiMailer' => [
'class' => '\navatech\email\transports\YiiMailer',
],
/*
'mailGun' => [
'class' => '\navatech\email\transports\MailGun',
'apiKey' => 'xxx',
'domain' => 'our-domain.net',
],
*/
],
],
]
'modules' => [
'mailer' => [
'class' => 'navatech\email\Module',
'cleanAfter' => 30//clean after days
],
]
将命令添加到可用命令列表。将其放入控制台应用程序配置中
'controllerMap' => [
'email' => '\navatech\email\commands\EmailController',
],
将邮件发送守护进程添加到 crontab 中,可以通过 lockrun 或 run-one 工具
*/5 * * * * php /your/site/path/yii email/spool-daemon
或者,如果您将使用 cboden/ratchet
*/5 * * * * php /your/site/path/yii email/loop-daemon
用法
##后端访问此 URL
http://backend.yourdomain.com/mailer
或
http://backend.yourdomain.com/index.php?r=mailer
##简单用法
// obtain component instance
$emailManager = EmailManager::getInstance();
// direct send via default transport
$emailManager->send('from@example.com', 'to@example.com', 'test subject', 'test email');
// queue send via default transport
$emailManager->queue('from@example.com', 'to@example.com', 'test subject', 'test email');
// direct send via selected transport
$emailManager->transports['mailGun']->send('from@example.com', 'to@example.com', 'test subject', 'test email');
##高级用法 创建一个快捷名称 welcome_email
。例如
Welcome {{fullname}},
Thanks for registered at {{url}}.
Your username: <b>{{username}}</b>
Your phone: <b>{{phone}}</b>
发送/排队欢迎邮件
// use shortcuts
$user = new User();
$user->fullname = "Test ABC";
$user->username = "testabc";
$user->email = "test@gmail.com";
$user->phone = "0123456789";
...
if($user->save()) {
EmailTemplate::findByShortcut('welcome_email')->queue($user->email, ['fullname' => $user->fullname, 'username' => $user->username, 'ur' => 'http://domain.com', 'phone' => $user->phone]);
}