
php联系表单邮件头中“from:”字段因缺少必要空格导致邮箱被错误解析(如自动追加当前域名),正确写法需在姓名与尖括号邮箱间保留一个空格,并避免html/cloudflare邮箱混淆。
php联系表单邮件头中“from:”字段因缺少必要空格导致邮箱被错误解析(如自动追加当前域名),正确写法需在姓名与尖括号邮箱间保留一个空格,并避免html/cloudflare邮箱混淆。
在PHP构建邮件头时,From: 字段遵循RFC 5322标准格式:From: Display Name 。关键细节在于——显示名称与左尖括号 之间必须存在且仅存在一个英文空格。若遗漏该空格(如 "From: John),部分MTA(邮件传输代理)或安全层(如Cloudflare Email Protection)会将整个字符串误判为非法邮箱格式,进而触发“修复行为”:自动补全本地域名(如 @domain1.com),导致收件方看到类似 johnsmith429@domain1.com 的异常结构。
你原始代码:
$header = "From: " . $name . "\r\n";
生成的是 From: John Smith —— 缺少空格,违反语法规范。
✅ 正确写法(含空格 + 姓名可选):
// 推荐:保留姓名(更专业)+ 严格空格分隔 $header = "From: " . $name . " \r\n"; // 或仅邮箱(简洁但无显示名) $header = "From: " . $email . " \r\n";
⚠️ 特别注意:你的HTML中使用了Cloudflare邮箱保护( 一句话总结:一个空格决定邮件可信度——规范格式是防止域名劫持、提升送达率的第一道防线。@#@#@#@#@#@#@#@#@#@0 或 @#@#@#@#@#@#@#@#@#@1,它们自动处理RFC合规性、编码、附件及反垃圾邮件头(如 Reply-To, X-Mailer); From: 字段完全符合 Name 格式。$email = filter_var(strip_tags($_POST['email']), FILTER_SANITIZE_EMAIL);
$name = filter_var(strip_tags($_POST['name']), FILTER_SANITIZE_STRING);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
die("无效邮箱格式");
}
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











