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

PHP mail()函数邮件内容重音字符显示异常问题求助

解决邮件重音字符显示为HTML编码的问题

看起来你遇到的核心问题是邮件里的特殊字符被转成了HTML实体(比如茅变成é),结合你的代码和描述,我帮你梳理几个关键的修复点:

1. 先修复邮件头的换行符错误

你代码里的邮件头用了单引号包裹\r\n,但PHP里单引号不会解析转义字符,这会导致邮件头格式混乱,邮件客户端可能无法正确识别编码设置。把单引号改成双引号,或者用PHP_EOL更稳妥:

// 原来的错误写法
// $headers_APPLICATION_RECEIVER = 'From: "people" <x@y.com> \r\n';

// 修正后
$headers_APPLICATION_RECEIVER = "From: \"people\" <x@y.com>\r\n";
$headers_APPLICATION_RECEIVER .= "Reply-to: x@y.com\r\n";

2. 还原被HTML编码的$message内容

你收到的是&amp;eacute;这类实体,说明$message变量本身已经被HTML实体编码过(可能是之前的代码里用了htmlspecialchars()或类似函数)。需要先把它转回来:

// 把HTML实体还原成原始UTF-8字符
$message = html_entity_decode($message, ENT_QUOTES, 'UTF-8');

3. 确保$message是UTF-8编码

虽然你在邮件头里指定了UTF-8,但如果$message本身不是UTF-8编码,也会导致乱码。如果你的原始内容是其他编码(比如GBK、GB2312),要先转成UTF-8:

// 假设原始编码是GBK,根据实际情况调整
$message = mb_convert_encoding($message, 'UTF-8', 'GBK');

4. 测试简化版邮件排除干扰

先暂时去掉multipart/mixed的复杂结构,用纯文本邮件测试,确认问题是否解决:

$to_APPLICATION_RECEIVER = "w@z.ca";
$from_APPLICATION_RECEIVER = "x@y.com";
$subject_APPLICATION_RECEIVER = "Subject";

$headers_APPLICATION_RECEIVER = "From: \"people\" <{$from_APPLICATION_RECEIVER}>\r\n";
$headers_APPLICATION_RECEIVER .= "Reply-to: {$from_APPLICATION_RECEIVER}\r\n";
$headers_APPLICATION_RECEIVER .= "MIME-Version: 1.0\r\n";
$headers_APPLICATION_RECEIVER .= "Content-Type: text/plain; charset=UTF-8\r\n";
$headers_APPLICATION_RECEIVER .= "Content-Transfer-Encoding: 8bit\r\n";

// 先处理message
$message = html_entity_decode($message, ENT_QUOTES, 'UTF-8');
// 如果需要转编码就加这行:$message = mb_convert_encoding($message, 'UTF-8', 'GBK');

mail($to_APPLICATION_RECEIVER, $subject_APPLICATION_RECEIVER, $message, $headers_APPLICATION_RECEIVER);

按这个顺序排查,应该能解决字符显示成HTML实体的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:50:18