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

PHPMailer卡在"Connection: opened"状态,寻求故障排查方案

排查PHPMailer连接SMTP后无后续响应的问题

看起来你的PHPMailer在成功建立SMTP连接后就停住了,哪怕用错误密码测试也没触发认证相关的调试信息,这大概率是连接后的加密或交互环节出了问题,给你几个排查方向:

1. 465端口必须指定SSL加密

465是SMTPS协议的专用端口,需要明确开启SSL加密,但你的代码里缺少SMTPSecure配置项。PHPMailer不会自动根据端口推断加密方式,所以连接建立后无法进入下一步的认证流程。

修改代码,添加SSL配置:

$mail->SMTPSecure = 'ssl'; // 适配465端口的SSL加密

2. 超时时间设置过短

你设置了$mail->Timeout = 5;,5秒的超时时间对于SMTP认证和邮件发送来说可能不够,导致程序在等待服务器响应时直接终止,还没来得及输出后续调试信息。建议调大到10~15秒:

$mail->Timeout = 15;

3. 测试SMTP服务器的连通性

可以用命令行工具直接测试SMTP服务器的交互是否正常,执行以下命令(替换成你的SMTP主机):

openssl s_client -connect your-smtp-host:465

如果命令能成功建立SSL连接并返回SMTP服务器的欢迎信息,说明网络和服务器端没问题;如果卡住或报错,可能是服务器防火墙拦截了流量,或者SMTP主机配置有误。

4. 检查PHPMailer版本

旧版本的PHPMailer对SMTP SSL连接的处理可能存在bug,建议更新到最新的稳定版,避免因版本兼容性导致的问题。

最后,建议给send()方法添加错误捕获,这样能直接获取PHPMailer的错误信息,方便排查:

if (!$mail->send()) {
    echo '发送失败: ' . $mail->ErrorInfo;
} else {
    echo '邮件发送成功!';
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:57:34