呈现HTML电子邮件取决于打开它的客户端



HTML电子邮件是一堆变幻莫测的电子邮件。我的问题在于上标。

我的代码需要在某些桌面客户端中工作:

  • Outlook 2000
  • Outlook 2003
  • Outlook 2007
  • Outlook 2010

以及某些基于网络的电子邮件客户端(Firefox、Chrome、Explorer):

  • Gmail
  • 雅虎
  • AOL
  • Internet Explorer 7浏览器(lol)

目前我遇到的最好的跨浏览器代码是:

<sup style="font-size:11px; line-height:0; vertical-align:3px;">

这在除了Outlook2007和2010之外的所有应用中都非常有效,因为在这些应用中,字体大小缩小到几乎无法阅读。其他代码,如:

<sup style="position:relative; vertical-align:baseline; bottom:4px;">

这段代码在所有方面都很好,除了Gmail,它去掉了导致上标位于基线的位置。

在尝试了几十种不同的样式组合后,以上两种组合提供了最一致的字体大小和行高。

问题

是否有一些代码片段可以放在头部,告诉电子邮件使用特定的代码或类,这取决于电子邮件在哪个客户端打开?我知道Gmail更喜欢内联样式而不是类,所以也许我可以内联地应用Gmail漂亮的代码,但如果它在Gmail之外打开,就会取消内联样式,回到类上。

您可以使用条件注释专门针对Outlook:

<!--[if gte mso 9]>
    /* Your Outlook-specific CSS goes here. */
<![endif]-->

使用mso标记或style标记的组合。

mso标签将只针对Outlook或特定版本的Outlook,而Gmail不会从样式标签中呈现任何内容。

我会为gmail设置内联样式,然后在样式标记中使用!important来覆盖内联声明。如果要在样式标记中为非Outlook的其余电子邮件客户端声明多个样式,请使用mso条件标记。

我强烈建议在这种情况下使用类似预编译器的实用程序。它将自动内联css类,并执行其他有助于解决跨客户端问题的优化。如果你经常做这类事情,甚至还有一个api可以自动化这个过程。

我能够在不使用条件语句的情况下解决我的问题,我觉得这值得分享,以防其他人处理同样的问题。

我拿着我原来的<sup>,换成了<span>

因此,在没有任何变化的情况下,在所有内容中创建<sup>风格的外观时,应该使用以下内容作为上标:

<span style="font-size:85%; line-height:0; vertical-align:3px;"></span>

这在上述所有客户端中都进行了测试,所有内容看起来都完全相同。

最新更新