发送邮件

来源:互联网 发布:代徐敬业知乎 编辑:程序博客网 时间:2024/05/19 02:30

原来看到很多发送邮件的教程,但由于自己是新手,总找不到对应的文件位置,最终搞出来了邮件发送。
1、了解事件
事件跟JavaScript中的时间相同,用户的某种行为触发后,反馈给某种动作。
2、邮件发送(通过事件)
(1)建立回调函数,就是用户触发后的行为

//对应文件位置,不懂的话,自己去参考PHP命名空间 namespace backend\components; use Yii; class Mail {    public static function sendMail($event){        $mail=Yii::$app->mailer->compose();        $mail->setTo($event->email);        $mail->setSubject($event->email);        $mail->setTextBody($event->content);        return $mail->send();    } }

(2)定义事件并触发

namespace backend\controllers; use Yii; use yii\web\Controller; use backend\components\event\MailEvent; class SendMailController extends Controller{    const SEND_MAIL='send_mail';    public function init(){        parent::init();        $this->on(self::SEND_MAIL,['backend\components\Mail','sendMail']);    }    public function actionSend(){        //触发邮件事件        $event=new MailEvent();        $event->email='1280371035@qq.com';        $event->subject='事件邮件测试';        $event->content='邮件测试内容';        $this->trigger(self::SEND_MAIL,$event);    } }

(3)在(1)步骤中的回调函数接受了一下参数,需要创建一个类来传递这些参数,参数必须是yii\base\Event或者其子类

 namespace backend\components\event; use yii\base\Event; class MailEvent extends Event{    public $subject;    public $email;    public $content; }

(4)配置后可以实现发送邮件\common\config\main-local.php

        'mailer' => [            'class' => 'yii\swiftmailer\Mailer',            'viewPath' => '@common/mail',            'useFileTransport' => false,            'transport'=>[                'class'=>'Swift_SmtpTransport',                'host'=>'smtp.qq.com',                'username'=>'128*******@qq.com',                'password'=>'qq邮箱授权码,百度去',                'port'=>'25',                'encryption'=>'tls',            ],            'messageConfig'=>[                'charset'=>'UTF-8',                'from'=>['128******@qq.com'=>'自己想的名字'],            ],        ],