基于 Laravel 开发的程序,在本地测试时,发送邮件功能正常。发布到阿里云服务器后,发送邮件报错:

Connection could not be established with host smtp.163.com [Connection timed out #110]

看了下阿里云的文档,发现是阿里云屏蔽了25端口,解决办法是使用465端口及ssl加密协议发送邮件即可。

配置示例:

MAIL_MAILER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=465 //默认配置的端口号是25,而阿里云屏蔽了25端口,因此改为465端口
MAIL_USERNAME=xxxxxx@163.com 
MAIL_PASSWORD=xxxxxxxxxxxx
MAIL_ENCRYPTION=ssl //默认配置的是none,465端口是ssl加密发送邮件的端口,因此改为ssl。
MAIL_FROM_ADDRESS="xxxxxx@163.com"
MAIL_FROM_NAME="${APP_NAME}"

再次测试发送邮件,成功!问题解决。