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

PHPMailer表单邮件功能曾正常运行,现突然失效求助

解决PHPMailer表单邮件无法发送的问题

1. 优先排查发送限制相关问题

  • 核对邮件服务商配额:多数免费/共享邮件服务(如Gmail、Outlook)有日发送量上限,普通Gmail账号日发送上限约500封,超限后会临时封禁发送权限,一般24小时后自动恢复。
  • 查看服务器邮件日志:Linux服务器可查看/var/log/mail.log或/var/log/exim/mainlog,Windows服务器检查IIS的SMTP日志,日志里会明确标注是否因配额超限被拒绝。
  • 检查退信记录:去邮箱的「已发送」「垃圾邮件」或「退信」文件夹查看,若存在退信,里面会有具体限制原因(比如短时间发送大量相似邮件被判定为垃圾邮件)。

2. 启用PHPMailer调试获取具体错误

给你的mail-devis.php加上调试代码,直接定位问题:

// 开启SMTP调试模式
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';

// 发送时捕获错误信息
if (!$mail->send()) {
    die("发送失败: " . $mail->ErrorInfo);
} else {
    echo "邮件发送成功";
}

提交表单后,页面会显示详细的SMTP交互日志,能直接看到是连接失败、认证错误还是配额超限。

3. 检查前端JS验证是否阻断提交

打开浏览器开发者工具(F12),切换到「控制台」标签,提交表单时查看是否有JS报错。如果JS验证逻辑出错,会直接阻止表单提交到PHP脚本,看起来像是邮件发不出,但实际PHP根本没收到请求。

4. 排查服务器环境临时变动

  • 确认PHP版本:若今早之后服务器升级了PHP,旧版PHPMailer可能不兼容,建议更新PHPMailer到最新稳定版。
  • 核对SMTP配置:检查代码里的$mail->Host、$mail->Port、$mail->SMTPSecure是否正确,比如Gmail的SMTP端口为587(TLS)或465(SSL),服务商偶尔会调整端口。
  • 检查端口开放状态:联系主机商确认服务器的25、587、465端口是否被防火墙/安全组封禁。

5. 临时测试验证

换一个不同服务商的邮箱账号配置到PHPMailer中,提交表单测试。如果能正常发送,说明原账号确实存在发送限制问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:46:10