【原创】Yii2使用swiftMailer发送QQ邮件

今天想在监控上做一个yii2使用qq邮箱发送邮件的功能。

一、安装swiftMailer扩展

默认yii 2.0会有这个扩展,如果没有就安装。

composer require –prefer-dist yiisoft/yii2-swiftmailer

或者修改composer.json,require加入: “yiisoft/yii2-swiftmailer”: “*”,

二、开启QQ邮箱IMAP/STMP服务

进入你的QQ邮箱,进入账户界面->设置->账户->开启服务:IMAP/SMTP服务

这里的意思是可以使用imap.qq.com作为邮件接收服务器,smtp.qq.com作为邮件发送服务器。

IMAP是什么?
IMAP,即Internet Message Access Protocol(互联网邮件访问协议),您可以通过这种协议从邮件服务器上获取邮件的信息、下载邮件等。IMAP与POP3类似,都是一种邮件获取协议。区别就是一个有消息反馈,一个没反馈。

根据页面要求发送短信开启后可以获取授权码,相当于发送账号的密码,记得保存下来。

三、修改yii2配置文件

我是修改了advanced\common\config\main-local.php,加入以下内容:

<?php
return [
    'components' => [
      'mailer' => [
         'class' => 'yii\swiftmailer\Mailer',
         'useFileTransport' =>false,//这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件
         'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'smtp.qq.com',  //每种邮箱的host配置不一样
            'username' => 'xxx@qq.com',//用发送开启了功能的邮箱
            'password' => 'xxxxxx',//授权码
            'port' => '465',
            'encryption' => 'ssl',

         ],
         'messageConfig'=>[
            'charset'=>'UTF-8',
            'from'=>['xxx@qq.com'=>'admin']
         ],
      ],

四、控制器或命令行编写发送代码

$url='http://www.jd.com/';
$mail= Yii::$app->mailer->compose();
$mail->setTo('xxx@foxmail.com');
$mail->setSubject("上架了");
//$mail->setTextBody('zheshisha ');   //发布纯文字文本
$mail->setHtmlBody("<br>商品:<a href='".$url."' target='_blank'>购买地址</a>");    //发布可以带html标签的文本
if($mail->send())
 echo "success";
else
 echo "failse";

//批量多发
$users = ['xxx1@qq.com', 'xxx2@qq.com']; 
$messages = []; 
foreach ($users as $user) {
 $messages[] = Yii::$app->mailer->compose() 
 ->setTo($user) 
 ->setSubject('测试主题') 
 ->setHtmlBody('测试内容'); 
} 
Yii::$app->mailer->sendMultiple($messages);

还可以模板方式,发送附件等,具体看官方文档:

https://www.yiiframework.com/doc/guide/2.0/en/tutorial-mailing

 

此条目发表在服务器分类目录,贴了, 标签。将固定链接加入收藏夹。

发表评论