cbm / yii2-mailqueue
为 Yii 框架提供的邮件消息队列扩展
0.1.0
2015-04-01 22:40 UTC
Requires
- videlalvaro/php-amqplib: v2.1.0
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-09-28 17:43:43 UTC
README
本扩展通过消息队列为 Yii 2 提供邮件解决方案。它已准备好支持 RabbitMQ。对于其他消息队列,您可以提供自己的 "mqMessageClass"(见下文),只要它实现了 QueueMessageInterface。当然,您需要安装类似 RabbitMQ 的消息队列。
请注意,此扩展已稳定,但尚未准备好投入生产。
请向 https://github.com/chrisb88/yii2-mailqueue 提交问题报告和拉取请求。
安装
安装此扩展的首选方法是通过 composer。
运行以下命令之一
php composer.phar require --prefer-dist cbm/yii2-mailqueue
或
"cbm/yii2-mailqueue": "*"
将其添加到 composer.json 的 require 部分。
用法
示例配置
return [ //.... 'components' => [ // This is the message queue mailer config, it substitutes the original mailer config 'mailer' => [ 'class' => 'cbm\mailqueue\QueueMailer', 'mqMessageClass' => 'cbm\mailqueue\RabbitMessage', 'mqConfig' => [ 'host' => 'localhost', 'port' => 5672, 'user' => 'guest', 'password' => 'guest', 'queue' => 'email_task', 'publishRoutingKey' => 'email_task', ], ], // You also need the original yii swift mailer but with a different name 'emailMailer' => [ 'class' => 'yii\swiftmailer\Mailer', //.... ], ], ];
然后您可以按照以下方式将邮件发送到队列(对原始实现没有修改)
Yii::$app->mailer->compose('contact/html') ->setFrom('from@domain.com') ->setTo($form->email) ->setSubject($form->subject) ->send();
别忘了将您的原始 yii swift mailer 重命名为 "emailMailer"。它仍然需要发送真实的电子邮件。
运行电子邮件消费者
将应用 console/controller 下的文件复制到您的应用 console/controller(或您的控制台命令所在的任何位置)并运行
yii email-task
消费者将监听电子邮件消息并使用原始 yii swift mailer 将它们发送出去。