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

如何让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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 14:54:13