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

PHP邮件表单提交后接收邮件缺失姓名、邮箱等输入数据

问题排查结论

邮件只显示message字段内容,核心原因是mail.php中调用mail()发信时,正文参数只传了单独的用户留言变量,没有把姓名、发件邮箱、主题这些字段拼接进正文。除此之外代码里还有3个会导致功能异常的隐藏bug:

  • 邮件头拼接错误:用单引号包裹'\r\n'作为换行符,PHP单引号不会解析转义字符,会直接输出字面量字符串,导致邮件头格式非法,容易被邮件服务商判为垃圾邮件,出现发件人不显示、丢件等问题
  • Session成功提示赋值错误:写的$_SESSION['Thanks for contacting us, we will be in touch shortly!']是把提示文本当成了Session数组的键名,没有给对应键赋值,页面根本读不到提交成功的提示
  • 发件人格式不规范:直接把用户填写的邮箱放到From头中,没有附带发件人姓名,不符合多数邮件服务商的格式要求,容易被拦截。
修正代码

1. 修复mail.php

核心是拼接完整的邮件正文,修正邮件头格式:

<?php
// 读取配置中的收件人邮箱
$config = require_once __DIR__ . '/../config/app.php';
$recipient_email = $config['mail']['to_email'];

// 读取用户提交的所有字段
$contact_name = $inputs['name'];
$contact_email = $inputs['email'];
$user_subject = $inputs['subject'];
$user_message = $inputs['message'];

// 拼接完整HTML格式邮件正文,把所有字段都加进去
$mail_body = <<<HTML
<p>网站表单收到新留言:</p>
<p><strong>提交人姓名:</strong>{$contact_name}</p>
<p><strong>提交人邮箱:</strong>{$contact_email}</p>
<p><strong>留言主题:</strong>{$user_subject}</p>
<p><strong>留言内容:</strong></p>
<p>{$user_message}</p>
HTML;

// 构造合规邮件头
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=utf-8';
$headers[] = "To: $recipient_email";
$headers[] = "From: {$contact_name} <{$contact_email}>";
// 换行符必须用双引号包裹才能正确解析转义
$header = implode("\r\n", $headers);

// 发送邮件
mail($recipient_email, $user_subject, $mail_body, $header);

2. 修复index.php的Session赋值错误

找到POST分支里设置成功提示的代码,把原来的错误写法:

$_SESSION['Thanks for contacting us, we will be in touch shortly!'];

替换为正确的赋值写法:

$_SESSION['message'] = 'Thanks for contacting us, we will be in touch shortly!';
额外优化建议
  • 你当前post.php里加了nickname字段的蜜罐校验,但表单里没有加对应的隐藏字段,蜜罐不会生效。可以在表单里加一行<input type="hidden" name="nickname" value="">,正常用户看不到这个字段不会填写,爬虫自动填充内容时就会被直接拦截
  • 原生PHP的mail()函数投递成功率较低,对发件域名校验严格,如果后续出现收不到邮件、进垃圾箱的问题,建议改用PHPMailer通过SMTP服务发信,稳定性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:45:37