yii2.0邮件发送问题

6 篇文章 0 订阅

yii2.0邮件发送问题

首先贴出我发送邮件的源码

$mail= Yii::$app->mailer->compose();   
$mail->setFrom(['no-reply@dianhua.cn'=>$from]);  
$mail->setTo($to);  
if($cc){
	$mail->setCc($cc);  
}
$mail->setSubject($subject);  
$mail->setHtmlBody($body);//发布可以带html标签的文本
$mail->send();

这里我用的是yii2.0支持的swift_mailer插件

配置文件中配置为

 return [
        'components' => [
            'mailer' => [  
            'class' => 'yii\swiftmailer\Mailer',  
            'useFileTransport' =>false,//这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件
            'transport' => [  
                'class' => 'Swift_SmtpTransport',  
                'host' => '127.0.0.1',  
                'username' => 'xx',  
                'password' => 'xxx',  
                'port' => 465,  
                'encryption' => 'ssl',                       
                           ],   
            'messageConfig'=>[  
               'charset'=>'UTF-8',  
               'from'=>['xxx@xxx.com'=>'哈哈']  
               ],  
        ],
        ],
    ];

当然,这个配置在PHP版本5.5环境下可以正常发送邮件,在5.6环境下却不可以发送邮件,这是因为PHP版本升级时变更了OpenSSL。

Exception 'Swift_TransportException' with message 'Connection could not be established with host 127.0.0.1 [ #0]'

in \vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php:271

这是5.6版本下的报错信息

修改方式通过查询得知有三种解决方案(前两种亲测有效,第三种失败)

  1. 修改php版本,降级(不建议)
  2. 更改端口或者屏蔽ssl的使用
    1. 端口25发送邮件
    2. 端口465发送邮件,但是不能采用ssl方式,【‘encryption’ => ‘ssl’】这句代码必须注释掉
    3. 端口587发送邮件,方式采用tls(比较安全)
  3. 更改邮件中ssl关于证书验证的配置
$options['ssl'] = array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true); //没有找到在哪修改(¬_¬)

上面解决方案中的第三种方案我还没有找到解决方法,有知道的可以回复我一下,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Michael·Ren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值