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

升级PHPMailer后AJAX请求JSON解析失败问题排查

解决PHPMailer升级后SMTP日志混入JSON响应的问题

核心原因

PHPMailer 6.x版本默认调试模式会直接将SMTP交互日志输出到HTTP响应流里,和你最后用json_encode输出的JSON内容混合,导致前端拿到的响应不是纯JSON格式,触发JSON.parse语法错误。

具体修复步骤

  • 关闭PHPMailer调试输出:初始化PHPMailer实例后,把调试级别设为0,彻底禁止SMTP日志输出:

    $mail->SMTPDebug = 0; // 0代表关闭所有调试输出
    

    要是需要保留日志排查问题但不想影响响应,可把日志定向到文件:

    $mail->SMTPDebug = 2; // 开启详细调试
    $mail->Debugoutput = function($str, $level) {
        file_put_contents('/your/log/path/smtp.log', date('Y-m-d H:i:s') . " - " . $str . PHP_EOL, FILE_APPEND);
    };
    

    注意要确保日志目录有写入权限。

  • 清空前置输出:确认process_form.php在json_encode输出前,没有任何echo、print或PHP错误警告输出。可以用输出缓冲清空之前的所有内容:

    ob_start();
    // 这里放你的表单处理、PHPMailer发送代码
    ob_end_clean(); // 清空所有前置输出
    echo json_encode(['ok' => $is_valid, 'messages' => $messages]);
    exit; // 确保后续无额外代码输出
    
  • 验证纯JSON响应:修复后直接访问process_form.php(可模拟POST参数),检查页面内容是否只有纯JSON字符串,无任何额外日志或HTML内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:07:36