HTML 格式的电子邮件在 Gmail 中根本不显示,但在其他邮件客户端中显示

问题描述 投票:0回答:6

我目前正在从 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: [email protected]
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: <[email protected]>
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 [email protected]) 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 [email protected]) [email protected]
Received: by joshholat.local (Postfix, from userid 70)
    id 775063662E01; Sun, 28 Aug 2011 16:29:06 -0500 (CDT)
To: Josh Holat <[email protected]>
Subject: Password Reset Request
X-PHP-Originating-Script: 501:Email.php
From: appname <[email protected]>
Content-type: text/html
Message-Id: <[email protected]>
Date: Sun, 28 Aug 2011 16:29:06 -0500 (CDT)

我很困惑为什么第三方客户端可以正常显示但 Gmail 却忽略它?

css gmail html-email gmail-imap
6个回答
92
投票

我正在更新我的答案,因为它有很多观点,并且有新工具可用。我为后代留下我原来的答案。

编辑 * 9/19/19

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


原答案:

Gmail 不支持

<style>
标签。您需要为 gmail 使用内联 css 才能正常工作。

这是一份参考清单。 http://www.campaignmonitor.com/css/


38
投票

GMail 不支持

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


5
投票

上面的回答都很好,只是想补充几点。 此链接的所有学分:

  1. Gmail 仅支持

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

  2. Gmail 会在遇到错误时删除您的整个

    <style>
    块。

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

  4. Gmail 不支持属性选择器和大多数伪类。例如

    div[class="content"]{ color: red }
    。 Gmail也不支持像
    :checked
    :active
    这样的伪类。

编辑:3 年后回想起来,Gmail CSS 很奇怪。


3
投票

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

  1. 将默认电子邮件模板代码复制到 .jenkins 目录下的电子邮件模板文件夹中。复制模板的链接: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"
    并保存模板并在您的工作中使用它。

完成。它对我有用。


2
投票

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


-2
投票

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

Mac:

Command+Shift+R
Windows:
Control+Shift+R

© www.soinside.com 2019 - 2024. All rights reserved.