56

我目前正在从 PHP 的 mail() 函数发送 html 格式的电子邮件并检查它们只是为了确保它们显示为 HTML(除了格式化,我很清楚格式会因客户端而异(可能很大)客户端) . 它们在 Apple Mail 客户端和我的 iPhone 上显示为 HTML。但是,Gmail 完全拒绝将其显示为 HTML。我并不是说它的格式不正确,它只是没有使用它出现的 HTML。

奇怪的部分是正在加载来自标签的 img,但仅此而已……是不是我主要使用 div 进行布局,而这对于 Gmail 或其他东西(与表格)来说太新了?

就 CSS 和其他方面而言,查看原始源代码会显示以下内容:

<html><head><style>body { background-color: #F2F2F2; font-family: Arial; color: #5C5C5C; font-size: 11pt; } a { color: #46AAFF; text-decoration: none; } #container { width: 750px; margin-right: auto; margin-left: auto; } #header { float: right; padding: 3px; height: 30px; } #header a { color: #666666; margin-right: 10px; } #mainBody { padding: 20px; background-color: #FFF; border: 1px solid #DADADA; border-radius: 3px; } #imageArea { border-top: solid #E8E8E8 1px; margin: 15px; } #singleImageArea { width: 250px; padding: 15px; } #singleImageArea p { float: right; line-height: 30px; width: 130px; margin-top: 20px; } #footer { padding: 10px; color: gray; } #footer p { text-shadow: 0px 2px #FFF; font-size: 10pt; } #footer a { color: #ADADAD; float: right; padding-left: 20px; padding-right: 20px; } #footer img { width: 35px; height: 23px; padding: 10px; float: left; } </style></head><body><div id="container"><div id="header"><a href="http://appname.local/login/">Login</a></d
 iv><div style="clear: both;"></div><div id="mainBody"><h1>Hi Josh Holat!</h1>You've sent a request to <strong>reset</strong> your appname password. Just click the link below <em>(or copy and paste it into your browser)</em> and follow the instructions to set a new password. The link will expire in one hour.<br/><br/><a href="http://appname.local/sb/reset-password/?r=2768af61698fcde9c04f9449351575d6bfe6d720">http://appname.local/sb/reset-password/?r=2768af61698fcde9c04f9449351575d6bfe6d720</a><br/><br/>If you feel this request was submitted in error, don't worry; you can safely ignore this e-mail and your password will not be changed.<br/><br/>Much Love,<br/>Us</div><!-- #mainBody --><div id="footer"><img src="http://appname.local/images/email/footer_sb.png" /><p>&copy; 2011 appname, Inc. All Rights Reserved <a href="http://appname.local/sb/legal/">Legal</a><a href="http://appname.local/sb/contact/">Contact</a><a href="http://s
 tagebloc.local/sb/developers/">Developers</a><a href="http://appname.local/sb/blog/">Blog</a></p></div><!-- #footer --></div><!-- #container --></body></html>

也:

    Delivered-To: appname@gmail.com
Received: by 10.229.40.2 with SMTP id i2cs133298qce;
        Sun, 28 Aug 2011 14:29:08 -0700 (PDT)
Received: by 10.42.152.199 with SMTP id j7mr4419937icw.417.1314566947950;
        Sun, 28 Aug 2011 14:29:07 -0700 (PDT)
Return-Path: <_www@joshholat.local>
Received: from joshholat.local (arh2281.urh.uiuc.edu [130.126.70.193])
        by mx.google.com with ESMTP id w3si6800550icz.109.2011.08.28.14.29.06;
        Sun, 28 Aug 2011 14:29:06 -0700 (PDT)
Received-SPF: neutral (google.com: 130.126.70.193 is neither permitted nor denied by best guess record for domain of _www@joshholat.local) client-ip=130.126.70.193;
Authentication-Results: mx.google.com; spf=neutral (google.com: 130.126.70.193 is neither permitted nor denied by best guess record for domain of _www@joshholat.local) smtp.mail=_www@joshholat.local
Received: by joshholat.local (Postfix, from userid 70)
    id 775063662E01; Sun, 28 Aug 2011 16:29:06 -0500 (CDT)
To: Josh Holat <appname@gmail.com>
Subject: Password Reset Request
X-PHP-Originating-Script: 501:Email.php
From: appname <noreply@appname.com>
Content-type: text/html
Message-Id: <20110828212906.775063662E01@joshholat.local>
Date: Sun, 28 Aug 2011 16:29:06 -0500 (CDT)

我很困惑为什么第三方客户端会显示它很好但 Gmail 只是忽略它?

4

6 回答 6

87

我正在更新我的答案,因为它有很多视图,并且有新工具可用。我将把我原来的答案留给后代。

编辑 * 9/19/19

您可以在此处通过电子邮件客户端找到 CSS 属性支持: https ://www.caniemail.com/


原答案:

Gmail 不支持该<style>标签。您需要使用内联 css 才能使 gmail 正常工作。

这是一个参考列表。 http://www.campaignmonitor.com/css/

于 2011-08-28T23:14:27.857 回答
38

GMail不支持 <style>标签,许多客户端也不支持。为了让您的生活更轻松,您可以使用 convert 将样式标签转换为内联 CSS:https ://templates.mailchimp.com/resources/inline-css/

于 2013-02-19T22:51:18.123 回答
4

上面的回答都还不错,就是想再补充几点。此链接的所有学分:

  1. Gmail 仅支持<style>. <head>Gmail 确实支持嵌入式样式 ( <style>)。但是,仅在 HTML 文档的头部支持嵌入样式。<style>渲染通过非 Google 帐户 (GANGA) 检索的电子邮件时,Gmail Android 和 iOS 应用程序根本不支持。

  2. <style>如果遇到错误,Gmail 会删除您的整个屏蔽。

  3. Gmail 不允许负 CSS 边距值。

  4. Gmail 不支持属性选择器和大多数伪类。例如div[class="content"]{ color: red }。Gmail 也不支持 和 之类的伪:checked:active

于 2019-05-11T07:48:36.573 回答
2

我看到您使用的是名为#footer 的 ID。在处理邮件时,Google 似乎无法识别该名称。请注意,在从 gmail 看到的字体代码中,您的所有 ID 都可能以“exc”+ idName 出现,#footer 除外。尝试使用不同的名称。

于 2013-10-02T15:40:15.667 回答
1

这有点晚了,但在将邮件 SMTP 从 Outlook 更改为 Gmail 后,我也面临同样的问题。由于 Gmail 不再支持 Style 标签,因此电子邮件未采用默认的预期模板格式。以下解决方案对我有用:

  1. 将默认电子邮件模板代码复制到 .jenkins 目录下的 email-templates 文件夹。复制模板的链接:https ://github.com/jenkinsci/email-ext-plugin/blob/master/src/main/resources/hudson/plugins/emailext/templates/groovy-html.template

  2. 只需将样式标签的属性从 STYLE 更改为 STYLE type="text/css" data-inline="true" 并保存模板并在您的工作中使用。

完毕。它对我有用。

于 2021-04-23T11:16:20.140 回答
-2

通过清除浏览器中的浏览数据然后加载 gmail 来做到这一点。它仍然会显示 html 内容。在同一页面上进行硬刷新。

苹果电脑:

命令+Shift+R
视窗:
控制+Shift+R

于 2021-04-03T07:47:46.747 回答