找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1326|回复: 0
打印 上一主题 下一主题

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

[复制链接]

2649

主题

2649

帖子

7875

积分

论坛元老

Rank: 8Rank: 8

积分
7875
跳转到指定楼层
楼主
发表于 2018-2-14 05:25:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            前言
本文主要介绍的是关于解决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授权码(到你邮箱中的设置->账户 查看)
通过以上努力你会成功接收邮件!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
            
            
您可能感兴趣的文章:
  • yii框架通过控制台命令创建定时任务示例
  • yii的CURD操作实例详解
  • Yii框架form表单用法实例
  • Yii2搭建后台并实现rbac权限控制完整实例教程
  • Yii2框架使用计划任务的方法
  • Yii实现Command任务处理的方法详解
  • Yii2框架中日志的使用方法分析
  • Yii框架批量插入数据扩展类的简单实现方法
  • yii 2.0中表单小部件的使用方法示例
  • Yii 2.0如何使用页面缓存方法示例
  • Yii框架实现记录日志到自定义文件的方法
  • Yii框架创建cronjob定时任务的方法分析
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端