样式在 Gmail 中不起作用

Posted

技术标签:

【中文标题】样式在 Gmail 中不起作用【英文标题】:Styles not working in Gmail 【发布时间】:2016-05-30 14:20:59 【问题描述】:

我正在向各种电子邮件客户端(例如 yahoo、hotmail、gmail、....)发送电子邮件。

我有一个 id 为 OrderInfo 的 div,里面有一个 变量,它会生成一个动态表。

HTML

<div id="OrderInfo">
  variable 
</div>

动态 table 生成带有小写字母的标题(th),所以我想将其更改为大写字母和更多样式。所以我写了一个选择器

CSS

#OrderInfo table tr th 
  text-transform: uppercase;
  background-color: #737373;
  color: white;

这适用于 yahoo、hotmail 但不适用于 gmail

我发现只有内联样式适用于 gmail,但我如何才能修改动态样式。

我无法控制 变量(我在 div 中提到过)它会生成一个表格,其中包含在发送到客户端时进行处理的值。

所以我不能保留一个静态表,也不能改变它的呈现方式

【问题讨论】:

我们可以内联编写选择器吗? 【参考方案1】:

gmail 以及其他一些 Web 和桌面/移动客户端剥离了在 head 中的 &lt;style&gt;...&lt;/style&gt; 节点中导入或嵌入的 css 样式表

将它们内联:

<div id="OrderInfo">
    <table>
        <tr>
            <td style="text-transform: uppercase; background-color: #737373; color: white;">
                <!-- .......... -->
            </td>
        </tr>
    </table>
</div>

作为更一般的建议:构建电子邮件 html 并非易事,因为最终结果可能会因收件人的邮件客户端而异。

一般规则是使 html 尽可能简单,避免“现代”css 功能;尽可能使用嵌套表而不是 div(有人说像构建 15 年前的网页一样构建 html)。

以上内容非常笼统,可能并不总是正确的。

有一些在线资源提供了有关如何制作 html 电子邮件或模板的建议和规则。

最后,如果您想确定结果,唯一且始终遵循的一条规则:使用各种客户端测试您的消息

【讨论】:

我想把它交给动态(在运行时生成)表而不是 div (更新了答案):好的,将 css 放在 &lt;td&gt; 元素上 - 或任何需要样式的元素。 我想将它提供给动态(在运行时生成)表而不是 div。我不能把那个静态的。它将由一些逻辑生成,我无法控制它@Paolo 你的意思是你没有生成表格的html,对吧? 在这种情况下,您可以将 html 作为字符串并在运行时对其进行编辑,在将整个消息发送到客户端之前添加 css inline。这一点都不是微不足道的,而且超出了最初的问题。 Anywat 有一些工具可以操作存储在字符串中的 html 内容。【参考方案2】:

2018 年更新

GMAIL 现在和不久前一直支持嵌入式 CSS,因此您可以在 head 中的标签 &lt;style&gt; 内使用 CSS,它甚至允许/支持使用媒体查询。


老答案

Gmail 不支持内嵌 CSS,需要使用内联样式,看看这个

12 Things you MUST Know when Developing Emails for Gmail and Gmail Mobile Apps

你可以这样做:

&lt;th bgcolor="#737373" style="text-transform: uppercase; color:white&gt;&lt;/th&gt;

【讨论】:

这是一个动态生成的th。我怎样才能预先设计?我怎样才能给选择器内联? @dippas 我刚刚给你举了一个例子,说明我的答案是如何内联样式。 不,这个答案完全错误,Gmail 不支持所有样式。 你到底在哪里读到我说过它允许所有样式?【参考方案3】:

许多电子邮件服务不支持电子邮件模板中包含的 css。而是使用内联 css。

此外,电子邮件模板应使用表格形成,因为它仅支持 HTML3。您可以使用带有td 标签的 HTML4/5 元素

请检查this link。它将帮助您构建电子邮件模板。

【讨论】:

【参考方案4】:

尝试使用这种样式,使您的链接变为红色,对悬停情况没有特殊效果:

a:linkcolor: red
a:visitedcolor: red
a:hovercolor: red
a:activecolor: red

这对我来说很好,但如果缺少 4 个语句中的任何一个,它在 gmail 客户端和 Outlook 中都不起作用。它们还必须按上面显示的顺序出现。

【讨论】:

以上是关于样式在 Gmail 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

悬停在电子邮件模板中的 Gmail 和 Outlook 2007 中不起作用

Android ACTION_SEND 超链接在 GMail 中不起作用

Gmail SMTP 在 ec2 实例中不起作用

gmail smtp 在我使用 codeigniter 框架的主机中不起作用

为啥“category:social”在 GMail UI 搜索中使用,但在 GmailApp.search("category:social", 0, 500) 中不起作用

在聚合管道中设置条件在 mongodb 中不起作用