解决Yii2邮件发送结果返回成功,但接收不到邮件的问题

5年以前  |  阅读数:1021 次  |  编程语言:PHP 

前言

本文主要介绍的是关于解决Yii2邮件发送返回成功但接收不到邮件问题的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:

刚刚用了一下yii邮件发送功能,虽然结果返回成功,但接收不到邮件。

配置文件代码如下:


    '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授权码(到你邮箱中的设置->账户 查看)

通过以上努力你会成功接收邮件!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例