Laravel 5 & PHP 7 发送邮件问题解决方案

错误提示:

Swift_IoException: Connection to ssl://smtp.163.com:465 Timed Out 
in /var/local/loan-ad/loan-ad202107051522/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php:166

有两个解决方案:一个是使用 SSL 协议发送邮件,另一个是不使用 SSL,只使用普通的 25 号端口去发送邮件

第一个方案更安全,但不灵活,需要修改 swift mailer 的源代码(下面主要说这个方案)

第二个方案很简单,但不够安全

SSL 的方案

第一步:配置 .env 文件 (我用的是 163企业邮箱)

MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=465
MAIL_USERNAME=xxxxxx@163.com
MAIL_PASSWORD=KFYOATPDBMBENBMY
MAIL_ENCRYPTION=ssl
————————————————

第二步:修改 swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php

在文件的 250 行,这个establishSocketConnection 方法中有个 $options = [];

只需要在它下面加上:

$options['ssl'] = array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true);

非 SSL 方案

上面的 第 1 步 中的 MAIL_PORT 换成 25

上面的第 1 步 中只需要注释掉 MAIL_ENCRYPTION 这一行

不用修改上面的 第 2 步 中的代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值