错误提示:
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 步
中的代码