在创建 HTML 电子邮件时,我们应该使用 html、head、body 标签吗?

Posted

技术标签:

【中文标题】在创建 HTML 电子邮件时,我们应该使用 html、head、body 标签吗?【英文标题】:When creating HTML emails, should we use html, head, body tags? 【发布时间】:2011-04-23 14:58:48 【问题描述】:

在我的电子邮件视图中,我通常只是做类似...

<dl>
   <dt>Name</dt>
   <dd>Value</dd>
</dl>

我应该这样做吗?

<html>
  <head></head>
  <body>
    <dl>
       <dt>Name</dt>
       <dd>Value</dd>
    </dl>
  </body>
</html>

换句话说,就像我在标记一个独立的文档?

我想我可以放心地假设任何基于 Web 的电子邮件客户端都会将其删除?

什么是正确的方法?

【问题讨论】:

不管怎样,Thunderbird 在其消息中输出htmlheadbody 标签。 【参考方案1】:

正确的做法是遵循 HTML standard。您可以验证您的 HTML 页面here。

您的邮件客户端应该遵循它,并且应该丢弃不受支持或不安全的内容,例如 javascript

我将在此处公开以下标准可能有益的一些原因:

    愿意将您的邮件显示为整页的网络邮件可以保留您的格式。 网络邮件会简单地去除它不需要的标签和属性。但你永远不知道是哪一个。 更容易找到遵循格式标准的(服务器端)组件,因此更不容易出错。不遵循标准的解析器可能会崩溃,导致您的电子邮件无法显示。

【讨论】:

-1 正确的方法是在相关客户端中进行测试。虽然邮件客户端应该遵循这些标准,但实际上他们都不这样做。 mschonaker 是正确的。如果每个人都开始遵循标准,那么使用将......嗯......标准化。否则,所有开发人员都必须根据当前的情况实施 hack(想想你,IE6!)。正确的方法是遵循标准。 “html 电子邮件”没有标准。您指的是 html 的标准。 我同意这个答案,尽管许多客户端呈现无效的 html,但大多数客户端呈现的最可靠格式是拥有有效的 html! 这是正确答案。部分或正文的 mime 类型将是 text/html。无论在何种环境下,这种类型都应遵循标准,无论是 Web 浏览器还是电子邮件客户端。 @cjcela 有正确的想法,如果我们都坚持支持 IE8,那么网络就不会发展。如果我们不遵守标准,邮件中呈现的 HTML 将如何演变?你应该做的是坚持标准,但要认识到heads 中的样式表之类的东西可能会被忽略并有一个优雅的后备。【参考方案2】:

是否包含 html/head/body 标签完全无关紧要——它们始终是可选的,不会以任何方式影响文档的呈现。

最重要的是怪癖模式是否开启。不幸的是,您无法在网络邮件设置中控制它。表格和内联样式是您的朋友。最好的办法是在尽可能多的网络邮件和桌面客户端中进行测试。

【讨论】:

Which doctype should I use in HTML email? “它们始终是可选的,不会影响文档的呈现”这根本不是真的,许多呈现器的容错性较低,可以完全正确地选择不呈现无效的 html。 当邮件客户端有一个链接“在浏览器中查看此电子邮件”时会发生什么?将由默认浏览器来呈现无效的 HTML。【参考方案3】:

此线程上的许多帖子都相当陈旧,因此它们不再准确。

如今,如果您打算做任何花哨的事情,HTML 电子邮件应该包含 doctype、html 和正文声明。

有很多关于这个主题的指南可以帮助您学习如何正确编码 HTML 电子邮件,但其中大多数都忽略了文档类型的细节,这就是我偶然发现您的问题的原因。

我建议您阅读以下 2 篇来自熟悉各种问题的知名团队的帖子:

campaign monitor's take

email on acid's take

【讨论】:

有趣...您说这里的帖子很旧,并且您在回答 7 年前的博客帖子时添加了一个链接! 我做了,但是被选中的博文是经过精心挑选的,因为它们具有权威性,而且它们在当时具有相当的前瞻性。他们表达的观点在当时相当罕见,尤其是当您与此处其他回复共享的过时断言进行对比时。 @AlexisWilke 并且其中一个链接甚至是 mentioned here 3 年前!但至少它现在在一个答案中,所以我可以尝试用一个赞成票将它提升到列表中【参考方案4】:

完全取决于接收它的电子邮件客户端。根据我的经验,大多数会解释 HTML 的电子邮件客户端并不关心您是否有完整的 body/head/html 标签等。事实上,对于大多数浏览器来说,您甚至不需要这些标签。您需要在头部标签中包含样式/标题等。否则它们本身并不是真正必要的。我从未见过它们是必要的。

【讨论】:

html/head/body 标签总是可选的。【参考方案5】:

我知道有一件事情是对的:使用 HTML 开始和结束标签有助于一般垃圾邮件评分,因为许多此类基于设备的过滤器和软件防火墙会在使用 html 的电子邮件中添加一个点左右,但不使用开始和结束标签。

【讨论】:

你有证据支持这个说法吗? 我在过去几天中仅通过在 Gmail 中“查看原件”就观察到了这种行为。在那里,我可以看到没有打开结束标签的电子邮件的垃圾邮件分数:例如X-垃圾邮件级别:* | X-Spam-Report: score=1.6 tests=HTML_MESSAGE, HTML_MIME_NO_HTML_TAG, MIME_HTML_ONLY | X-Spam-Score:1 - 例如见wiki.apache.org/spamassassin/Rules/HTML_MIME_NO_HTML_TAG 我也看到了这一点,有些公司的垃圾邮件隔离阈值非常低,以至于缺少 HTML 标签就足以阻止您的电子邮件通过。此页面未列出可用的确切设置,但我看到该软件留下了一条有关“HTML_MIME_NO_HTML_TAG”规则的消息,并带有描述“仅 HTML 消息,但没有 HTML 标记”。 techlib.barracuda.com/BSF/SpamScoring【参考方案6】:

我认为没有正确的方法,但尝试让电子邮件在尽可能多的电子邮件阅读器中可见。

我通常会在 Thunderbird 中查看电子邮件,因为 Outlook 的容错率更高。

在 Thunderbird 中,这是电子邮件的 HTML 代码(我有一个显示 html 的扩展程序)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body bgcolor="#ffffff" text="#000000">
        This is the body text<br>
<div class="moz-signature"><i><br>
<br>
Regards<br>
Alex<br>
</i></div>
</body>
</html>

顺便说一句,我每次可以将纯文本电子邮件用于我的所有网络表单。我在使用 html+纯文本电子邮件的黑莓电子邮件方面遇到了很多问题。

【讨论】:

我尝试了您的电子邮件格式,结果与我在 javascript 中输入的方式相同:例如:var body = '';收到的电子邮件 .. 你如何让它在 javascript 中“工作”?

以上是关于在创建 HTML 电子邮件时,我们应该使用 html、head、body 标签吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何将建好的HTML格式的图片插入邮件

如何使用win32com将.htm添加到电子邮件正文

如何创建响应式电子邮件模板?

我们是不是应该在很大程度上基于本地 jwt 令牌到期日期来验证用户

iOS-电子书开发 笔记

保存为HTML而不创建.xml文件的子文件夹