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

Laravel在Linode共享主机上无法通过Gmail SMTP发送邮件

问题根因判定

本地测试发送正常,说明你贴出的Gmail SMTP配置参数本身没有错误,部署到Linode共享主机后报连接超时,本质是主机侧无法与ssl://smtp.gmail.com:465建立TCP链路,问题和Laravel框架逻辑、Gmail账号配置无关。

排查步骤

按优先级从高到低排查:

  • 主机出站端口连通性验证
    先通过SSH登录Linode共享主机,直接用系统命令测试端口连通性,排除框架层干扰:
    执行以下任意一条命令即可:
    telnet smtp.gmail.com 465
    nc -zv smtp.gmail.com 465
    如果命令执行后长时间无响应最终提示超时,可直接确认是主机侧拦截了对应端口的出站请求。
  • 主机防火墙/安全规则检查
    Linode部分共享主机节点默认会拦截25、465、587等常用SMTP端口的出站流量,目的是防范主机被用于滥发垃圾邮件,你可以先在主机管理面板检查出站防火墙规则,确认是否放行了465端口的TCP请求。
  • PHP环境依赖检查
    执行php -m | grep openssl确认当前运行Laravel的PHP版本已启用openssl扩展,同时检查php.ini配置中的disable_functions列表,确认stream_socket_client、fsockopen等网络请求函数未被禁用。这类问题一般会报SSL握手失败而非连接超时,排查优先级最低。
解决方案
  • 端口拦截类问题
    先尝试切换Gmail SMTP的备用端口配置,将.env中邮件参数修改为如下内容:
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.gmail.com
    MAIL_PORT=587
    MAIL_USERNAME=example@gmail.com
    MAIL_PASSWORD=secret
    MAIL_ENCRYPTION=tls
    MAIL_FROM_ADDRESS=example@gmail.com
    MAIL_FROM_NAME="${APP_NAME}"
    
    修改完成后在项目根目录执行php artisan config:clear清除Laravel配置缓存,再测试发信。
    如果587端口同样被拦截,直接提交工单给Linode客服,说明你的业务发信场景,申请解除SMTP端口的出站限制即可,提交时附上你的业务用途说明,避免被判定为垃圾邮件发送请求。
  • 环境依赖类问题
    在主机PHP配置面板中启用openssl扩展,从disable_functions列表中移除被禁用的网络相关函数,保存后重启PHP服务即可恢复。
  • 注意:你本地已经测试发信正常,说明Gmail账号侧的应用密码配置已经符合要求,不需要重复调整Gmail账号的安全设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 16:18:19