时间:2021-07-01 10:21:17 帮助过:25人阅读
- 'components' => [
- 'db' => [
- 'class' => 'yii\db\Connection',
- 'dsn' => 'mysql:host=localhost;dbname=yiidemo',
- 'username' => 'root',
- 'password' => 'root',
- 'charset' => 'utf8',
- ],
- 'mailer' => [
- 'class' => 'yii\swiftmailer\Mailer',
- 'viewPath' => '@common/mail',
- // send all mails to a file by default. You have to set
- // 'useFileTransport' to false and configure a transport
- // for the mailer to send real emails.
- 'useFileTransport' => true,
- 'transport' => [
- 'class' => 'Swift_SmtpTransport',
- 'host' => 'smtp.qq.com',
- 'username' => '********@qq.com',
- 'password' => '********',
- 'port' => '465',
- 'encryption' => 'ssl',
- ],
- ],
- ],
控制器代码:
- public $modelClass = 'common\models\User';
- public function actions()
- {
- $actions = parent::actions();
- // 禁用"create" 操作后可用自己在控制器中写的方法
- unset($actions['update'],$actions['create'],$actions['delete']);
- //$actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider'];
- return $actions;
- }
- public function actionCreate(){
- $request = Yii::$app->request;
- $params = $request->post();
- if($params){
- $fromName = $request->getBodyParam('fromName');
- $fromBady = $request->getBodyParam('fromBady');
- $toName = $request->getBodyParam('toName');
- $body = $request->getBodyParam('body');
- return $this->send($fromName,$fromBady,$toName,$body);
- }
- return false;
- }
- /*
- * Email Send function
- * @param1 $fromName
- * @param1 $toName
- * @param1 $body
- * $return boo1ean
- *
- */
- public function send($fromName,$fromBady,$toName,$body = ''){
- $mail = \Yii::$app->mailer->compose()
- ->setFrom([$fromName=>$fromBady])
- ->setTo($toName)
- ->setSubject('邮件发送配置')
- ->setTextBody($body) //发布纯文字文本
- ->send();
- if($mail){
- return [
- 'name' => [
- 'fromName' => $fromName,
- 'fromBady' => $fromBady,
- 'toName' => $toName,
- 'body' => $body,
- ],
- 'message' => '发生到['.$toName.']的邮件成功!',
- 'code' => 0,
- 'status' => 200,
- ];
- }else{
- return [
- 'name' => 'Error',
- 'message' => '发生到'.$toName.'的邮件失败!',
- 'code' => 0,
- 'status' => 402,
- ];
- }
- }
但是你会发现数据返回是成功的但是你却没收到邮件
这是你应该把'useFileTransport' => true 改成 'useFileTransport' => false,
并且你的邮箱密码是qq授权码(到你邮箱中的设置->账户 查看)
通过以上努力你会成功接收邮件!
以上就是Yii2邮件发送出现问题怎么解决的详细内容,更多请关注Gxl网其它相关文章!