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

如何在PHP mail()函数的邮件内容中嵌入自定义字符串?代码问题排查

你的代码存在这些问题:
  • 语法错误:$email = 'myemail@gmail.com'和$subject = 'Welcome!'这两行末尾缺少分号,PHP语句必须以分号结束,这会直接导致脚本报错无法执行。
  • 字符串拼接无间隔:$message里的文本拼接后会出现内容连续的情况,比如用户名为"张三"的话,会显示成Thank you for signing up张三We are so glad that you are here,缺少空格或标点导致阅读困难,需要在拼接处添加合适的分隔符。
  • HTML标签不完整:<p>标签没有闭合,应该补充</p>,否则HTML结构不规范,部分邮件客户端可能无法正确渲染内容。
  • 未设置HTML邮件头:默认情况下mail()发送的是纯文本邮件,你写的HTML标签会被直接当作文本显示,而不会解析成HTML格式。需要通过mail()的第四个参数添加Content-Type头,声明邮件为HTML类型。
  • 转义方式错误:real_escape_string是用于SQL查询时转义特殊字符的,这里拼接HTML内容应该用htmlspecialchars(),防止用户输入的特殊字符(比如<、>、&)破坏HTML结构或引发安全问题。

修正后的示例代码:

// 转义HTML特殊字符,适配HTML内容场景
$name = htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');

$email = 'myemail@gmail.com';
$subject = 'Welcome!';
// 补全HTML标签,添加空格和标点分隔文本
$message = '<HTML><body><p>Thank you for signing up ' . $name . '. We are so glad that you are here.</p></body></html>';
// 设置邮件头,声明为HTML格式
$headers = "Content-Type: text/html; charset=UTF-8\r\n";

mail($email, $subject, $message, $headers);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:50:21