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

WordPress用wp_mail发HTML邮件时<link>标签被移除如何解决?

WordPress wp_mail发送HTML邮件时保留标签的解决方法

问题原因

你遇到的标签被移除,本质是两个层面的问题:

  1. 如果你是通过strip_tags或者WordPress内置的wp_kses系列函数过滤邮件内容,未将<link>标签及其需要的rel、href属性加入允许列表时,标签会被自动过滤。
  2. 补充注意:就算成功保留<link>标签,绝大多数主流邮件客户端(Gmail、Outlook、国内邮箱等)都默认屏蔽外部CSS资源引入,样式依然不会生效,这是HTML邮件的通用兼容性规则,和wp_mail本身无关。

解决步骤

1. 优先推荐:替换外部为内联样式

这是兼容性最高的方案,完全避免标签被过滤的问题,同时适配所有邮件客户端:

  • 把normal.css中的所有样式直接复制到邮件<head>的<style>块内
  • 更稳妥的方式是直接将所有样式转换为标签的行内style属性,完全不依赖外部或头部样式

修正后的发件代码示例:

$emailTo = 'abc@abc.com';
$subject = 'Updated about the process';
$headers = array(
    'Content-Type: text/html; charset=UTF-8',
    'From: xyz@xyz.com'
);

$body = '<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <style>
        /* 此处粘贴normal.css中所有邮件相关的样式 */
        .flrow { /* 原有样式 */ }
        .lar_overflow { /* 原有样式 */ }
        .flexooa.lar-line-header { /* 原有样式 */ }
    </style>
</head>
<body>';
$body .= '<div class="flrow lar_overflow">';
$body .= '<div class="flexooa lar-line-header">Recent History</div>';
$body .= '<div class="flexiia lar-line-header"></div>';
$body .= '<div class="flexooa lar-line-header hlast"></div>';
$body .= '</body></html>';

// 不需要重复设置内容类型,headers中已经声明即可
wp_mail($emailTo, $subject, $body, $headers);

2. 如必须保留标签的解决方法

如果确实需要保留外部CSS引入的标签,按以下步骤调整:

  • 检查自定义的wpse_allowedtags()函数,确保已经添加<link>标签及其所需属性,示例配置:
function wpse_allowedtags() {
    return array(
        'div' => array(
            'class' => array()
        ),
        'h3' => array(),
        // 添加link标签和允许的属性
        'link' => array(
            'rel' => array(),
            'href' => array()
        ),
        // 其他你需要保留的HTML标签
    );
}
  • 排查是否有其他主题、插件挂载了wp_mail相关的过滤器,对邮件内容做了额外的安全过滤,导致标签被移除。
  • 修正现有代码的语法错误:原代码中$body=$body.$'<div...多了多余的$符号,改为$body .= '<div...即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 04:00:02