平时注册用户发送邮件,比如说网络比较慢,那么客户就需要稍等一会,
但是这样呢,用户体验就不是太好,那么我们如何解决呢
需要准备的内容:
安装redis服务,linux 安装redis php支持redis
编写一个插件类
这个类一定要继承 swiftMailer 类,并重写这里的方法
我们在wender下建立一个yii2的邮件类
那么应该怎么做呢?
建立这样一个 vendor/doctorjason/milerqueue/src
文件夹
创建一个类:
class Message extends swiftmailer\Message{ public function queue(){ //把需要发送的邮件存放在redis中 //第一步 检测 redis是否存在,如果不能打开,那么提醒用户 redis error $redis=MyRedis::getInstance(); if(empty($redis)){ throw new Exception("redis error"); } //如果没有配置 swifMailer 或者 redis数据库没有选择成功的话,那么也返回一个错误 } }
通过 redis rpush 出入到队列中
好的上边是message类
那么还有一个MailerQueue 这个类,怎么设置嫩?
https://coding.imooc.com/lesson/90.html#mid=2527
class MailerQueue etends yii\swiftMailer\Mailer{ 然后进行自己的代码,进行编辑 }
建立计划任务定时离线发送队列中的邮件