You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8 使用Gmail发邮件报stream_socket_client连接超时如何解决

问题排查与修复步骤

1. 验证服务器到Gmail SMTP的网络连通性

  • 登录Ubuntu 18.04服务器,先使用telnet测试端口连通性,测试587端口运行命令:telnet smtp.gmail.com 587,测试465端口运行命令:telnet smtp.gmail.com 465。如果返回连接超时,说明是服务器网络层面不通,和Laravel配置无关。
  • 若telnet不通,运行traceroute -T -p 587 smtp.gmail.com查看链路拦截节点,常见拦截原因包括云服务商默认封禁邮件端口、服务器本地防火墙拦截出站请求。

2. 网络层面修复方案

  • 检查本地防火墙规则:运行ufw status查看是否禁止了587/465端口的出站规则,若存在拦截则添加放行规则:ufw allow out 587、ufw allow out 465,执行完成后重载防火墙:ufw reload。
  • 若使用云服务器,前往云服务商的安全组/防火墙控制台,添加587、465端口的TCP出站放行规则,部分云厂商需要单独提交申请解封邮件端口。
  • 若服务器所在网络本身屏蔽Gmail服务,可配置网络代理,或更换为其他可正常访问的第三方邮件服务。

3. 确认Laravel配置正确性

  • 核对.env文件内的邮件配置项,完整的Gmail标准配置如下:

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=你的Gmail完整邮箱地址
MAIL_PASSWORD=你的Gmail密码/应用专用密码
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=你的Gmail完整邮箱地址
MAIL_FROM_NAME="${APP_NAME}"

  • 注意:如果Gmail账号开启了两步验证,「less secure app」选项会自动失效,必须生成应用专用密码填入MAIL_PASSWORD字段,不能使用账号原登录密码
  • 配置修改完成后运行php artisan config:clear清空配置缓存,避免旧缓存导致配置不生效。

4. 功能验证

可以使用Laravel自带的tinker命令测试发信,确认配置生效后再走业务逻辑测试。

内容的提问来源于stack exchange,提问作者Han Hsu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 07:51:01