首页 > 解决方案 > Firefox 和 Chrome:mailto 的区别:带有 html 标签

问题描述

输入以下 URL 会导致不同的结果,具体取决于使用的浏览器:

mailto:?body=<b>Text</b>

在 Chrome 中输入 URL 时,电子邮件正文中的 HTML 代码会正确呈现(Thunderbird 和 Gmail)。

文字                        (铬)

但是在 Firefox 中输入 URL 时,电子邮件正文中的 HTML 不会呈现(Thunderbird 和 Gmail)。

<b>文本</b>(火狐)

为什么?



Ubuntu 19.04
Chrome:版本 77.0.3865.75(官方构建)(64 位)
Firefox:69.0 Firefox 版本 2019 年 9 月 3 日

标签: htmlgoogle-chromefirefoxmailto

解决方案


考虑到在 mailto 链接中传递 HTML 可以被合理地视为安全责任,不同的浏览器行为是合理的。根据您的测试,我会说 Chrome 只是在将其传递给邮件应用程序之前从正文内容中剥离 HTML,而 Firefox 则保持原样。

然而,浏览器如何处理这并不是重点。问题是您不应该首先在 mailto 链接的正文字段中使用 HTML。请参阅RFC 6068 - 'mailto' URI 方案

特殊的“body”表示关联的是消息的正文。“body”字段值旨在包含消息的第一个文本/纯正文部分的内容。“body”伪标头字段主要用于生成用于自动处理的短文本消息(例如邮件列表的“订阅”消息),而不是用于一般 MIME 正文。

因此,不同的浏览器和邮件客户端如何处理它并不是重点。我想说您在 Firefox 中观察到的行为更符合标准;由于 mailto 链接预计会创建纯文本电子邮件,因此 HTML 标记按原样(或者它们可能在底层编码为 HTML 实体)传递给邮件客户端,以纯文本形式显示。从同样的意义上说,邮件客户端从 mailto 链接创建纯文本电子邮件也是合理的。

解决方案

您的问题的答案很简单,不要在 mailto body 字段中使用 HTML。它是非标准的,因此您不能期望在不同的邮件客户端和浏览器中获得一致的支持。


推荐阅读