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

Ajax向PHP传递数据失败,导致邮件内容为空的问题求助

联系表单邮件内容为空的问题解决方法

核心问题:PHP变量拼写错误

你的PHP代码中,获取POST请求参数时错误使用了$POST,正确的超全局变量应该是$_POST(缺少下划线)。这导致前端传递的所有参数都无法被正确读取,最终邮件内容为空。

修正后的PHP代码

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

// 开启错误提示,方便调试(上线后建议关闭)
error_reporting(E_ALL);
ini_set('display_errors', 1);

if(isset($_POST['name']) && isset($_POST['email'])){
    // 修正$_POST拼写,同时转义输入防止XSS
    $name               =   htmlspecialchars($_POST['name']);
    $email              =   htmlspecialchars($_POST['email']);
    $subject            =   htmlspecialchars($_POST['subject']);
    $message            =   htmlspecialchars($_POST['message']);

    require_once $_SERVER['DOCUMENT_ROOT']."/php/includes/phpmailer/Exception.php";
    require_once $_SERVER['DOCUMENT_ROOT']."/php/includes/phpmailer/PHPMailer.php";
    require_once $_SERVER['DOCUMENT_ROOT']."/php/includes/phpmailer/SMTP.php";

    try {
        $mail = new PHPMailer(true); // 启用异常模式

        // SMTP Settings
        $mail->isSMTP();
        $mail->Host         =   "secret";
        $mail->SMTPAuth     =   true;
        $mail->Username     =   'secret';
        $mail->Password     =   'secret';
        $mail->Port         =   secret;
        $mail->SMTPSecure   =   "ssl";

        // Email settings
        $mail->isHTML(true);
        $mail->setFrom($email, $name);
        $mail->addAddress("secret");
        $mail->Subject      =   "$email ($subject)";

        $MailBody           =   "From: ".$name."<br>";
        $MailBody           .=   "Email: ".$email."<br>";
        $MailBody           .=   "Message: ".$message."<br>";

        $mail->Body         =   $MailBody;

        $mail->send();
        $status = "success";
        $response = "Email is sent !";
    } catch (Exception $e) {
        $status = "failed";
        $response = "Something is wrong: <br>".$mail->ErrorInfo;
    }

    exit(json_encode(array("status" => $status, "response" => $response)));
}

额外优化建议

  1. 补充邮箱格式验证:JS端当前仅做非空校验,可增加邮箱格式检查,避免无效地址提交
  2. 统一表单字段命名:HTML中subject输入框的name属性为subjects,但JS和PHP用的是subject,虽然AJAX方式不受影响,但建议统一为subject,避免后续传统表单提交出错
  3. 强化输入安全:用htmlspecialchars()转义用户输入,防止HTML注入风险
  4. 异常捕获优化:启用PHPMailer异常模式,能更精准捕获邮件发送过程中的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 14:02:59