yii2.0框架发送邮件
yii2.0框架发送邮件
前言
今天公司有个业务需要群发邮件,然后公司用的是yii2框架 搞了许久 踩坑无数 终于有眉目了
一、yii2框架发邮件配置
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
// 'class' => 'yii\swiftmailer\Mailer',
// 'viewPath' => 'mail',//邮箱模板配置路径 注释此处邮箱模板会自动引用
// 'useFileTransport' => false,//不加此句时,如果收不到邮箱,就是在其他环境设置时是true,所以此处可以加上此句,避免收不到邮箱
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.exmail.qq.com',//smtp.exmail.qq.com是企业邮箱 smtp.qq.com 是qq邮箱
'username' => '****',//邮箱账号
'password' => '****',//邮箱密码
'port' => '465',//阿里云的是80,宝塔中这里一定要有端口,阿里云是80
'encryption' => 'ssl',
],
'messageConfig'=>[
'charset'=>'UTF-8',//信息字符集
'from'=>['admin@exmail.com.cn'=>'ART DCR Handle Job Notice']//设置发件人
],
二、接口代码部分
1.后端代码
public function actionSendMail(){
$mail =\Yii::$app->mailer;
// $mail->useFileTransport = false;//不加此句时,如果收不到邮箱,就是在其他环境设置时是true,所以此处可以加上此句,避免收不到邮箱
$bool= $mail->compose('reset-password',['token'=>'xxxxxx'])//引用模板并传值
// $mail->setTransport()//设置发送多个邮箱
->attach('favicon.ico')//添加附件 默认引用/web目录下的文件
// ->setFrom(['Jeffery.tang@consultech.com.cn'=>'测试群发邮箱'])//此处是设置发件人 如果配置中已配置 加了可能会报错 此处可不加
->setTo(['Jeffery.tang@consultech.com.cn'])//此处为数组时可以发给多个人
->setSubject('邮箱标题')
// ->setTextBody('姓名:小花,电话:132****8564')//发送文本内容
// ->setHtmlBody("<br>")//发送html标签
->send();
if($bool){
echo "success";
}else{
echo "failure";
}
}