WooCommerce默认邮件样式失效,请求排查解决指导
我之前碰到过一模一样的WooCommerce邮件样式丢失问题,折腾了好一阵才找到根源,给你整理几个实用的排查方向,一步步来应该能解决:
先确认邮件格式的基础设置
进入WooCommerce后台 → 设置 → 邮件,随便点开一个邮件模板(比如「新订单」),下拉找到「邮件格式」选项,务必确认选的是「HTML」而不是「纯文本」。有时候全局设置或单个模板会被误改,这是最容易忽略的起点。排查主题与第三方插件的冲突
- 先切换到WooCommerce官方默认主题(比如Storefront),然后测试下单看邮件样式是否恢复。如果恢复了,说明当前主题的
functions.php里可能有过滤邮件内容的代码,或者主题自带的邮件模板覆盖了默认样式——可以去主题目录下的woocommerce/emails文件夹检查,或者联系主题开发者确认。 - 要是换主题没用,就逐个禁用第三方插件(保留WooCommerce本身),每禁用一个就测试下单。找到冲突插件后,要么联系开发者更新,要么更换替代插件。
- 先切换到WooCommerce官方默认主题(比如Storefront),然后测试下单看邮件样式是否恢复。如果恢复了,说明当前主题的
检查服务器邮件发送的兼容性
有些服务器会自动把HTML邮件转成纯文本,尤其是用PHP默认的mail()函数发送时。可以试试改用SMTP类插件发送邮件,配置好SMTP服务(比如服务器自带的SMTP、SendGrid等)后再测试下单。SMTP发送的邮件格式兼容性更强,不容易被服务器篡改。验证WooCommerce邮件模板是否被篡改
查看你的主题目录下有没有woocommerce/emails文件夹,如果存在,里面的模板可能是旧版本或被修改过导致样式丢失。可以暂时把这个文件夹重命名(比如改成emails_backup),让WooCommerce调用核心默认模板,再测试邮件样式是否恢复。如果恢复了,就需要把最新的默认模板复制到主题目录,再重新自定义。排查自定义代码的干扰
检查主题的functions.php或自定义代码插件里,有没有类似add_filter('woocommerce_email_content_type', ...)的钩子代码——这个钩子会修改邮件内容类型。如果有,确认它是不是把类型设成了text/plain,如果是,要么删除这段代码,要么改成text/html。测试不同收件邮箱
有时候问题出在收件邮箱的设置上,比如某些邮箱默认强制显示纯文本模式。可以把测试邮件发送到不同平台的邮箱(比如Gmail、Outlook、QQ邮箱),如果只是个别邮箱显示异常,那就是邮箱自身的设置问题,和WooCommerce无关。
内容的提问来源于stack exchange,提问作者R.K.Bhardwaj

