邮件发送功能是常用的功能,通过邮件发送,我们可以及时的得到邮件报警,他人信息反馈等。
yii2.0框架怎么实现邮件的发送呢?接下来学习一下yii2.0.13 高级应用模板里面邮件的配置:需要先去163网易免费邮箱折你去哪个一个账号,开启POP3/SMTP/IMAP服务,设置一下客户端授权密码!这个很重要,在填写配置的时候password使用的是授权码而不是邮箱账号登录密码!!!
邮件发送配置:
打开配置文件将下面代码添加到 components => [...]中(例:高级版默认配置在/common/config/main-local.php)
'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail', 'useFileTransport' => false, //这里一定要改成false,不然邮件不会发送 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.163.com', 'username' => '18210890833@163.com', 'password' => '*********', //如果是163邮箱,此处要填授权码 'port' => '25', 'encryption' => 'tls', ], ],
在控制器中调用:D:\software\wamp64\www\apitpl\frontend\controllers\CkController.php
<?php namespace frontend\controllers; use Yii; use yii\web\Controller; /** * Site controller */ class CkController extends Controller { public function actionIndex() { $mail = \Yii::$app->mailer->compose() ->setFrom(['18210890833@163.com' => 'Yii 中文网']) ->setTo('961900940@qq.com') ->setSubject('邮件发送配置') //->setTextBody('Yii中文网教程真好 www.yii-china.com') //发布纯文字文本 ->setHtmlBody("<br>test") //发布可以带html标签的文本 ->send(); if($mail) echo 'success'; else echo 'fail'; } }
访问该地址即可:http://localhost/apitpl/frontend/web/ck/index.html
这是因为有些邮件服务器要求from和username必须一致,163邮箱就是这样。
为避免这个问题,我们可以将发件代码中的setFrom设置去掉,或者在param.php(或param-local.php)中配置supportEmail参数:
'supportEmail' => '18210890833@163.com'
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn