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

Angular发送FormData到PHP发邮件时PHP变量为空问题求助

问题根因

你代码里存在两处格式不匹配的错误,导致PHP无法正确读取参数:

  • 前端发送的是FormData格式数据,但手动指定了Content-Type: application/json的请求头,和实际传输的数据格式冲突
  • 后端按照JSON格式解析请求数据,和前端发送的multipart/form-data格式不匹配

修复方案

前端修改(TypeScript部分)

发送FormData时不需要手动设置Content-Type请求头,Angular的HttpClient会自动识别FormData类型,设置正确的multipart/form-data头以及边界值,删除你代码里的httpOptions相关代码即可。

修改后的onSubmit方法请求部分代码:

// 删除原有的httpOptions定义,直接传递formData即可
this.http.post(this.serverUrl, formData).subscribe(
// 后面的回调逻辑保持不变即可

后端修改(PHP部分)

FormData格式的提交数据不需要从php://input读取解析,直接用PHP内置的$_POST全局变量读取参数即可:

<?php
// 直接从$_POST中取对应参数,加判空避免报错
$name = $_POST['name'] ?? '匿名用户';

$to      = "example@mail.com";
$title    = "From: $name";
$body   = "test";
$body = wordwrap($body, 70);

$header = "MIME-Version: 1.0\r\n";
$header.= "Content-Type: text/plain; charset=utf-8\r\n";
$header.= "X-Priority: 1\r\n";

mail($to, $title, $body, $header);
?>

额外注意事项

  • 要确保你的PHP环境已正确配置邮件发送服务(sendmail或SMTP服务),否则mail函数无法正常发送邮件
  • 可以在PHP代码中加入参数校验和返回值,方便前端排查后续问题,比如参数为空时返回错误状态码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:54:00