Laravel邮件连接失败:php_network_getaddresses报错及GoDaddy缓存修复咨询
首先先把你遇到的报错贴出来,方便定位问题:
Connection could not be established with host p3plvcpnl452615.prod.phx3.secureserver.net :stream_socket_client(): php_network_getaddresses: getaddrinfo failed: Name or service not known
一、php_network_getaddresses: getaddrinfo failed 核心成因解析
这个报错的本质是DNS解析失败——简单来说,PHP尝试将你配置的邮件服务器主机名转换成对应的IP地址时,系统的DNS解析服务找不到该主机名的有效记录,相当于“找不到这个服务器的实际地址”。
常见触发场景包括:
- 主机名拼写错误:虽然你说已对比配置,但还是建议再仔细核对
MAIL_HOST的值,有没有多打、少打字符(域名不区分大小写,这条概率较低,但值得确认) - 服务器DNS配置异常:GoDaddy托管服务器如果未正确使用官方DNS服务器,或DNS服务临时故障,会导致解析失败
- 网络限制:服务器防火墙/安全组阻止了DNS查询请求(UDP 53端口),无法向DNS服务器发起解析请求
- 主机名已失效:GoDaddy对邮件服务器集群进行了维护或地址调整,旧的主机名被废弃,不再指向有效IP
二、是否与GoDaddy最新更新有关?
大概率是!GoDaddy经常会对旗下的邮件服务器集群进行维护或地址迭代,尤其是cPanel托管环境。如果这个主机名之前正常可用,突然出现报错,十有八九是GoDaddy更换了该服务器地址,旧主机名已失效。
你可以自行验证:打开GoDaddy提供的终端,执行命令 nslookup p3plvcpnl452615.prod.phx3.secureserver.net,如果返回NXDOMAIN(域名不存在)的提示,就说明该主机名确实已失效,需要去GoDaddy后台获取最新SMTP服务器地址。
三、通过GoDaddy终端修复Laravel配置缓存是否可行?
完全可行!而且这是排查配置类问题的关键步骤——Laravel的config:cache命令会将所有配置打包成一个缓存文件,即便你修改了.env或mail.php,只要未清理缓存,系统仍会沿用旧配置。
具体操作步骤:
- 登录GoDaddy主机管理面板,打开Terminal(即你截图中的界面)
- 进入Laravel项目根目录,比如执行
cd public_html(根据你的实际项目路径调整) - 依次执行以下命令:
# 清理配置缓存 php artisan config:clear # (可选)清理路由缓存,避免路由相关配置冲突 php artisan route:clear # (可选)清理视图缓存 php artisan view:clear - 执行完成后,再次测试邮件发送功能,查看问题是否解决
额外排查建议
- 若验证主机名已失效,前往GoDaddy「Email & Office」面板,找到对应邮箱账户,获取最新的SMTP设置(服务器地址、端口、加密方式),更新到
.env文件中 - 可在终端执行
telnet p3plvcpnl452615.prod.phx3.secureserver.net 587测试连接,若无法连接,说明要么主机名无效,要么端口被防火墙拦截 - 牢记:Laravel的
.env配置优先级高于config/mail.php,务必确保.env中的MAIL_HOST、MAIL_PORT等参数与官方最新配置一致
内容的提问来源于stack exchange,提问作者Sam Mah

