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

Swift_Mailer部署到服务器后出现连接超时错误的配置排查

Swift_Mailer部署到服务器后出现连接超时错误的配置排查

遇到这种本地测试正常、服务器上连Gmail SMTP超时的问题,我帮你梳理几个实际部署中常用的排查方向,都是踩过的坑:

  • 先确认服务器出站端口是否开放
    虽然你已经把CSF的SMTP_BLOCK设为Off,但服务器自身的防火墙(比如iptables)或者机房的外部防火墙可能还封了465端口。你可以在服务器上用命令测试连通性:

    telnet smtp.gmail.com 465
    # 或者用nc命令
    nc -zv smtp.gmail.com 465
    

    如果连接失败,直接联系服务器提供商开放465(或者587)端口的出站权限。

  • 检查Gmail账号的安全设置
    现在Gmail对SMTP登录的限制很严格:

    • 如果你的账号开启了两步验证,必须生成「应用专用密码(App Password)」,用这个密码替代原来的账号密码填入Swift_Mailer配置;
    • 如果没开两步验证,需要去谷歌账号的安全设置里开启「允许低安全性应用访问」(不过这个选项现在逐渐被谷歌限制,更推荐用应用专用密码)。
  • 尝试更换SMTP端口和加密方式
    有些服务器环境下465端口的SSL连接容易出问题,可以换成TLS协议的587端口试试,修改配置如下:

    $transport = (new \Swift_SmtpTransport(
        'smtp.gmail.com',
        587,
        'tls'
    ))
    ->setUsername('your-gmail-account@gmail.com')
    ->setPassword('your-app-password-or-allowed-password')
    ->setTimeout(12);
    

    如果还是有证书验证问题,可以临时添加SSL上下文选项(注意:关闭证书验证有安全风险,建议后续配置服务器的根证书):

    $transport->setStreamOptions([
        'ssl' => [
            'verify_peer' => false,
            'verify_peer_name' => false
        ]
    ]);
    
  • 检查服务器的PHP环境配置
    确保你的PHP环境满足两个条件:

    • openssl扩展已经启用:可以通过phpinfo()查看,没启用的话需要安装扩展并重启PHP服务;
    • allow_url_fopen选项设为On:同样在php.ini里检查,修改后重启PHP。
  • 排查DNS解析问题
    服务器可能无法正确解析smtp.gmail.com的域名,你可以在服务器上执行ping smtp.gmail.com测试解析结果。如果解析失败,把服务器的DNS换成公共DNS(比如8.8.8.8)再试试。

备注:内容来源于stack exchange,提问作者Vlad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 11:58:14