如何让PHP邮件表单在邮件中显示输入项名称与对应值
解决PHP邮件表单无字段名称的问题
你的问题核心是邮件内容$body的拼接仅输出纯数据,未添加对应的字段名称,只需修改邮件内容的构建逻辑即可实现目标格式。
修改方案
1. 重构邮件内容
给每个字段添加对应的中文名称,结合HTML格式的换行标签(因你设置了Content-type: text/html,<br>能更好适配各类邮件客户端)。
2. 修复Headers换行问题
原代码中implode('\r\n', $headers)使用单引号,\r\n会被当作普通字符串而非换行符,需改为双引号。
3. 清理未定义变量
原代码里的$message未定义,直接使用会导致邮件开头出现空白,建议移除或按需赋值。
修改后的PHP代码
<?php // 从配置文件获取收件邮箱 $config = require_once __DIR__ . '/../config/app.php'; $recipient_email = $config['mail']['to_email']; // 获取表单提交数据 $company_name = $inputs['name']; $employees = $inputs['employees']; $coverage = $inputs['coverage']; $telephone = $inputs['telephone']; $location = $inputs['location']; $contact_email = $inputs['email']; $subject = $inputs['subject']; // 构建邮件头 $headers[] = 'MIME-Version: 1.0'; $headers[] = 'Content-type: text/html; charset=utf-8'; $headers[] = "To: $recipient_email"; $headers[] = "From: $contact_email"; $header = implode("\r\n", $headers); // 双引号解析换行符 // 构建带字段名称的邮件内容 $body = "公司名称:$company_name<br>"; $body .= "员工数量:$employees<br>"; $body .= "当前保障:$coverage<br>"; $body .= "电话号码:$telephone<br>"; $body .= "地点:$location<br>"; $body .= "邮箱地址:$contact_email"; // 发送邮件 mail($recipient_email, $subject, $body, $header);
可选优化:数组映射字段(更易维护)
如果后续需要增减字段,可通过数组存储字段名称与对应变量,循环生成内容,避免重复代码:
// 字段映射:显示名称 => 对应表单数据 $fields = [ '公司名称' => $inputs['name'], '员工数量' => $inputs['employees'], '当前保障' => $inputs['coverage'], '电话号码' => $inputs['telephone'], '地点' => $inputs['location'], '邮箱地址' => $inputs['email'] ]; // 循环生成邮件内容 $body = ''; foreach ($fields as $label => $value) { $body .= "$label:$value<br>"; }
内容的提问来源于stack exchange,提问作者David Feudale
相关产品推荐
相关产品推荐

