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

如何解决textarea内容通过PHP发送邮件为空的问题?

解决textarea内容通过邮件发送为空的问题

我来帮你一步步排查这个邮件发送后textarea内容为空的问题,结合你的PHP代码,主要从以下几个方向入手:

1. 先确认前端是否正确发送了msn字段

首先要排查前端是否把textarea的内容正确打包进了JSON请求里:

  • 确保前端发送的JSON数据中包含msn键,对应textarea的真实值。比如用fetch发送请求的示例代码:
    fetch('你的PHP文件路径.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        'nombre-contacto-2': document.getElementById('nombre-input').value,
        'email-contacto-2': document.getElementById('email-input').value,
        'msn': document.getElementById('你的textarea-id').value // 这里必须准确获取textarea的值
      })
    });
    
  • 你可以在PHP代码里先打印所有接收的输入,确认msn字段是否存在且有值:
    $input = json_decode(file_get_contents("php://input"), true);
    var_dump($input); // 输出所有接收的字段,检查msn的状态
    exit;
    

2. 修复PHP代码里的变量初始化问题

你的代码中$MESSAGE_BODY直接进行拼接,但没有提前初始化,虽然PHP允许这种写法,但可能导致意外的未定义变量问题,建议先初始化变量:

// 初始化变量并添加分隔符,让内容更清晰
$MESSAGE_BODY = "MENSAJE: " . $input['msn'];

3. 验证JSON解码是否成功

如果前端发送的JSON格式有误,json_decode会返回null,导致你无法获取任何字段值。可以增加解码校验:

$rawInput = file_get_contents("php://input");
$input = json_decode($rawInput, true);

// 检查JSON解码是否成功
if ($input === null) {
    die("JSON解析失败: " . json_last_error_msg());
}

同时要确保前端请求的Content-Type头设置为application/json,否则php://input的内容可能不是标准的JSON格式。

4. 检查字段名拼写是否一致

PHP的数组键名是大小写敏感的!要确保前端发送的字段名是msn,和你PHP代码中$input['msn']的写法完全一致,比如前端不能写成MSN或者message。

5. 测试邮件内容是否正确生成

在调用mail()函数之前,先打印$MESSAGE_BODY,确认内容是否正确:

echo $MESSAGE_BODY; // 查看邮件内容是否包含textarea的值
exit;

如果这里能看到正确的内容,那问题可能出在邮件发送环节(比如服务器邮件配置、邮件头格式);如果这里还是为空,那就是前面的字段接收或拼接环节有问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:46:03