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

WordPress wp_mail无法发送HTML格式邮件问题求助

WooCommerce站点HTML邮件无法送达修复方案

核心问题定位

手动追加Content-Type: text/html; charset=UTF-8头会和WP Mail SMTP、WordPress核心生成的默认邮件头重复,造成MIME结构损坏,触发邮件服务商的拦截规则。WP Mail Logging仅记录WordPress层触发的发信动作,不会校验SMTP服务端的接收结果,因此会出现日志有记录但邮件实际未送达的情况。

分步修复操作

  • 移除所有自定义代码中手动向wp_mail()的$headers参数注入Content-Type声明的逻辑,包括主题、插件功能里的相关代码片段,这类手动加头的操作是造成头冲突的最常见原因。
  • 登录WordPress后台进入WP Mail SMTP设置页,找到「邮件」配置栏,将默认邮件类型直接设置为HTML,插件会自动生成符合RFC规范的HTML邮件头,无需手动声明。
  • 如果需要通过代码强制全站邮件使用HTML格式,使用WordPress官方提供的过滤器实现,不要手动拼接头:
// 注册到wp_mail_content_type过滤器设置HTML格式
add_filter( 'wp_mail_content_type', function () {
    return 'text/html; charset=UTF-8';
}, 10 );
  • 配置完成后进入WP Mail SMTP的测试邮件页面,勾选「发送HTML格式测试邮件」选项发信验证,若测试邮件正常送达,再验证WooCommerce的订单通知、客户邮件等场景的发信情况。
  • 若测试邮件仍无法送达,开启WP Mail SMTP自带的调试日志功能,查看SMTP服务端返回的实际错误信息:多数第三方SMTP服务会直接丢弃MIME结构异常的HTML邮件,不会返回退信,纯文本邮件因结构简单不会触发该拦截规则,这也是纯文本能发、HTML发不出去的典型特征。
  • 排查自定义邮件模板的格式问题:如果自行修改过WooCommerce的邮件模板,确保模板没有输出多余的换行、空白字符,避免破坏MIME结构的边界符。

注意:你之前手动添加的Content-Type头行尾带有多余的半角空格,这类不符合RFC规范的头格式也会直接造成邮件解析失败,被服务商拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:21:19