yii2.0邮件发送问题解决

Posted 努力的喵喵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yii2.0邮件发送问题解决相关的知识,希望对你有一定的参考价值。

用yii2.0邮件类做一个定时发送邮件的功能,在本地测试没问题,放到线上就说连接163服务器超时各种问题,最后查查改改,已经解决了,现在就把遇到的问题记录下。

<php 
$config = [
    \'id\' => \'basic-console\',
    \'basePath\' => dirname(__DIR__),
    \'bootstrap\' => [\'log\'],
    \'controllerNamespace\' => \'app\\commands\',
    \'mailer\' => [
            \'class\' => \'yii\\swiftmailer\\Mailer\',
            \'useFileTransport\' =>false,
            \'viewPath\' => \'mail/daybasic\',
            \'transport\' => [
                \'class\' => \'Swift_SmtpTransport\',
                \'host\' => \'smtp.qq.com\',  //每种邮箱的host配置不一样
                \'username\' => \'***********@qq.com\',
                \'password\' => \'16位授权码\', // 授权码
                \'port\' => \'465\',
                \'encryption\' => \'ssl\',
            ],
       
//       \'transport\' => [
//        \'class\' => \'Swift_SmtpTransport\',
//        \'host\' => \'smtp.163.com\', //每种邮箱的host配置不一样
//        \'username\' => \'***********@163.com\',
//        \'password\' => \'*********\', // 授权码
//        \'port\' => \'25\', //994端口
//        \'encryption\' => \'tls\',//ssl
//       ],
\'messageConfig\'=>[ \'charset\'=>\'UTF-8\', \'from\'=>[\'**********@qq.com\'=>\'admin\'] ], ], ] ?>

 顺带把发送邮件的代码也贴上。在sendemailController.php中

  //发邮件
$content="22222222";
//$app->params[\'email_users\']=[111@qq.com,22222@qq.com];
        $messages = [];
        foreach (\\Yii::$app->params[\'email_users\']  as $user) {
            $messages[] = \\Yii::$app->mailer->compose()
                ->setTo($user)
                ->setSubject("["标题标题")
               //->setTextBody($content);
               ->sethtmlBody($content);
        }
        \\Yii::$app->mailer->sendMultiple($messages);

 yii2.0后台的配置文件,因为写的是command下的文件,所有配置是console.php里。线上的文件一个在阿里云上,一个在百度云上,阿里云服务器上貌似25端口给禁止了,所以用连接不上163邮箱,修改端口25=>994,‘encryption’=>ssl。

在百度云上的服务器不知道什么原因发送就是不成功,163邮箱改成QQ邮箱就可以了,走的端口不一样,估计也是端口问题。用qq邮箱需要注意的是修改邮箱配置如下:

首先开启pop3/smtp服务,还有一点就是第三方登陆需要授权码。不过按照步骤获取就OK了。

 

以上是关于yii2.0邮件发送问题解决的主要内容,如果未能解决你的问题,请参考以下文章

Yii2.0中Mailer收发邮件详解

Javascript - 使用 HTML 片段通过电子邮件发送 JSON 输出

超实用的php代码片段

Yii2.0 实现的短信发送

C#和ASP.NET通过Gmail账户发送邮件的代码

查找发送电子邮件的解决方案