用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了。
原文:http://www.cnblogs.com/angellating/p/7241366.html