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

PHP发送HTML邮件在Outlook中UTF-8编码失效乱码如何解决?

问题原因

你遇到的是典型的UTF-8编码被错误以ISO-8859-1编码解析的问题:’的UTF-8编码为0xE2 0x80 0x99,如果解析端强行按单字节编码读取就会显示为’。Outlook默认优先读取邮件传输头的编码配置,而忽略HTML内嵌的meta charset声明,这是问题出现的核心原因。

可行解决方案

  • 优先设置邮件传输层编码
    无论你使用PHPMailer、SwiftMailer还是PHP原生mail函数,必须显式声明邮件全局编码为UTF-8,不要只依赖HTML内的meta标签:
    • 若使用PHPMailer,添加配置 $mail->CharSet = 'UTF-8';
    • 若使用原生mail函数,在邮件头中添加 $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
  • 特殊字符转义为HTML实体
    把模板中的特殊符号替换为对应的HTML实体,完全规避编码解析风险:
    原内容 Solicitor’s Certificates - Tips & Traps 替换为 Solicitor’s Certificates - Tips & Traps 即可,’ 是右单引号的通用HTML实体,所有邮件客户端均可正常识别。
  • 检查PHP源文件编码
    确保你编写代码的编辑器将PHP文件保存为 无BOM的UTF-8 格式,避免源文件本身编码错误导致字符串拼接后编码异常。
  • 优化HTML模板结构适配Outlook
    把meta编码声明放到<head>标签的最开头位置,还可以额外添加适配声明 <meta http-equiv="X-UA-Compatible" content="IE=edge">,适配Outlook使用的Word渲染引擎的解析规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:06:04