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

134

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

<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标签。 - palswim
6个回答

55

正确的方式是遵循HTML标准。您可以在此处验证您的HTML页面。

您的邮件客户端应该遵循它,应该丢弃不支持或不安全的内容,如JavaScript。

我会透露一些遵循标准可能有益的原因:

  1. 一个愿意将您的邮件显示为完整页面的Webmail可能会保留您的格式。
  2. Webmail将简单地剥离它不想要的标签和属性。但您永远无法知道哪些是。
  3. 更容易找到(服务器端)遵循格式标准的组件,因此更少出现错误。不遵循标准的解析器可能会发生故障,使您的电子邮件无法显示。

60
正确的方法是在相关客户端中进行测试。虽然邮件客户端“应该”遵循标准,但实际上几乎没有一个客户端做到这一点。 - Dan Blows
34
mschonaker是正确的。如果每个人都开始遵循标准,那么使用就会......嗯......被标准化。否则,所有开发人员都必须为当天的风格实现黑客解决方案(想到你了,IE6!)。正确的方法是遵循标准。 - cjcela
5
"html邮件"没有标准。您所指的是HTML的标准。 - rds
2
我同意这个答案,尽管很多客户端都会渲染无效的HTML,但最可靠的格式是拥有有效的HTML,可以跨越大多数客户端进行渲染! - markmnl
4
这是正确的答案。部分或正文的 Mime 类型应为 text/html。无论在什么情况下,无论是网络浏览器还是电子邮件客户端,都应遵循这种类型的标准。@cjcela 的想法是正确的,如果我们都继续支持IE8,网络就不会进化。如果我们不遵守标准,那邮件中呈现的HTML该如何发展?你应该遵守标准,但要认识到像在head中的样式表可能会被忽略,并具有优雅的备选方案。 - Brett Ryan

34
无论您是否包含html/head/body标签都是完全无关紧要的-它们始终是可选的,并不会以任何方式影响文档的呈现。
最重要的是quirks模式是否开启。不幸的是,在网络邮件设置中您无法控制它。表格和内联样式是您的好帮手。您最好在尽可能多的网络邮件和桌面客户端中进行测试。

8
在HTML电子邮件中应该使用哪种doctype?在HTML电子邮件中,推荐使用以下doctype声明:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 这将确保您的邮件在各种邮箱客户端(如Gmail、Outlook等)中呈现一致,并且通常可以避免出现不必要的布局和格式问题。 - sam
4
“它们始终是可选的,不会影响文档的呈现。”这并不是真实情况,许多渲染器容错性较低,有权选择不呈现无效的HTML代码。 - markmnl
当邮件客户端有一个“在浏览器中查看此电子邮件”的链接时会发生什么?由默认浏览器来呈现无效的HTML。 - Sergey

18

这个主题中的许多帖子都相当陈旧了,因此它们不再准确。

现如今,如果你想做一些花哨的操作,HTML电子邮件应该包括文档类型声明、html和body声明。

有很多指南可以帮助你学习如何正确编写HTML电子邮件,但是大多数都忽略了doctype的具体细节,这就是我遇到你的问题的原因。

我建议您阅读以下两篇文章,这是来自熟悉各种问题的权威团队的看法:

campaign monitor的观点

email on acid的观点


1
有趣...你说这里的帖子很旧,但你在回答中放了一个链接到一篇已经7年的博客文章! - Alexis Wilke
4
我这样做了,但是被选中的博客文章是经过精心挑选的,因为它们具有权威性,并且当时它们相当具有前瞻性。它们表达的观点在当时是相当不寻常的,特别是与其他回答中分享的陈旧观点形成对比时更是如此。 - kamelkev
@AlexisWilke,其中一个链接甚至在此处提到了3年前!但至少现在它在答案中了,所以我可以尝试通过点赞来提高它的排名。 - Hashbrown

12

完全取决于接收邮件的电子邮件客户端。根据我的经验,大多数支持HTML解释的电子邮件客户端并不在意你是否有完整的body/head/html标签等。实际上,对于大多数浏览器而言,你甚至不需要这些标签。你需要使用head标签来包含style/title等内容。否则它们本质上并不是必需品。我从来没有见过它们是必要的情况。


3
HTML的<html>、<head>和<body>标记是可选的。 - Josh Lee

11

我确信一件事情:使用HTML的开闭标签会帮助邮件通常得分较低,因为许多基于装置的过滤器和软件防火墙将给使用HTML但未使用开闭标签的电子邮件添加1分或更高。


12
你有证据支持这个主张吗? - alex
11
最近几天,我通过在Gmail中“查看原始邮件”来观察到了这种行为。在那里,我可以看到一个没有开闭标签的电子邮件的垃圾邮件分数,例如X-Spam-Level: * | X-Spam-Report: score=1.6 tests=HTML_MESSAGE, HTML_MIME_NO_HTML_TAG, MIME_HTML_ONLY | X-Spam-Score: 1 - 例如请参阅http://wiki.apache.org/spamassassin/Rules/HTML_MIME_NO_HTML_TAG - RidingTheRails
2
我也见过这种情况,有些公司的垃圾邮件隔离阈值非常低,错过HTML标记就足以阻止你的电子邮件传送。该页面没有列出可用的确切设置,但我曾看到软件留下了关于规则“HTML_MIME_NO_HTML_TAG”的消息,其中描述为“仅HTML消息,但没有HTML标记”。 https://techlib.barracuda.com/BSF/SpamScoring - JHS

5

我认为没有一种正确的方法,但要尽可能使电子邮件在尽可能多的邮件阅读器中可视。

我通常在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 = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'; 邮件接收到<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">...你如何让它在JavaScript中“工作”? - MLissCetrus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接