HTML电子邮件-Outlook.com将CSS样式从一个DOM元素转移到了另一个

时间:2019-01-12 18:22:35

标签: html css email outlook

我知道这篇文章的标题听起来很奇怪,但事实恰恰是这样。在使用Email和Acid和Litmus测试电子邮件模板时,我发现所有浏览器中的Outlook.com都将样式从一个DOM元素迁移到另一个DOM元素。我最初以为是电子邮件的未转义标签或其他常见问题,但事实并非如此。我还认为这可能是按钮标记,它是从Litmus自己的Bullet Proof Buttons帖子中提取的。但是,在尝试了所有四个选项以及我在网上找到的其他选项之后,它没有任何改变。

要谨慎解决此问题,我精心制作了一个电子邮件模板,其中仅包含复制发生的情况所需的最低限度的内容。

电子邮件模板:https://codepen.io/anon/pen/bOQmzz

<!DOCTYPE html>
<html lang="en">
<head>
    <meta content="width=device-width" name="viewport">
    <meta charset="utf-8">
    <title>Page Title</title>
</head>
<body>

<!-- BUTTON -->
<table>
    <tbody>
        <tr>
            <td style="padding: 10px;">
                <a style="background-color: #800080; border: 25px solid #EB7035;" href="#" >Button Label</a>
            </td>
        </tr>
    </tbody>
</table>

<!-- TEXT -->
<table>
    <tbody>
        <tr>
            <td style="padding: 50px;">
                <p>Hello World</p>
            </td>
        </tr>
    </tbody>
</table>

</body>
</html>

我从Litmus发送了一封测试电子邮件到我有权访问的Outlook.com帐户,并提取了它所生成的实际标记。在这里。

<table>
    <tbody>
        <tr>
            <td style="padding:10px">Button Label</td>
        </tr>
    </tbody>
</table>
<table>
    <tbody>
        <tr>
            <td style="background-color:#800080; border:25px solid #EB7035; padding:50px">
                <p>Hello World</p>
            </td>
        </tr>
    </tbody>
</table>

如您所见,它采用TD> A的样式并将其应用于以下TD。在我拥有的原始电子邮件模板中,这始终发生了多次。请参见下面的示例

原始模板:每个蓝色部分均已损坏 Original Email Template

测试模板:多种浏览器中的Outlook.com Outlook.com in multiple browsers

测试模板:其他电子邮件客户端的示例 Examples of other email clients

这感觉更像是Outlooks.com错误,而不是Outlook.com怪癖。谁能解释正在发生的事情并提出解决办法?

1 个答案:

答案 0 :(得分:0)

全部写完之后,我意识到它也在剥离A标签。那可能是因为它不是可解析的URL。在原始模板中,我有ESP代码{campaign-ID ... etc},而且可能也没有解决这些问题。因此,出于安全原因,它只是将它们剥离了,很酷。但是由于某种原因,它采用了该A链接的样式,将其剥离,然后将其应用于DOM中更下层的元素。他们在想WTF!

希望这可以避免其他人不得不从同一只兔子的洞里掉下来。

tl; dr仅当测试具有无法解析的URL的链接时,这是一个问题,因为Outlook出于安全原因将其删除,但是却摸索并在已删除的A链接上应用样式,以指向另一个DOM元素。