html - 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 日
解决方案
考虑到在 mailto 链接中传递 HTML 可以被合理地视为安全责任,不同的浏览器行为是合理的。根据您的测试,我会说 Chrome 只是在将其传递给邮件应用程序之前从正文内容中剥离 HTML,而 Firefox 则保持原样。
然而,浏览器如何处理这并不是重点。问题是您不应该首先在 mailto 链接的正文字段中使用 HTML。请参阅RFC 6068 - 'mailto' URI 方案:
特殊的“body”表示关联的是消息的正文。“body”字段值旨在包含消息的第一个文本/纯正文部分的内容。“body”伪标头字段主要用于生成用于自动处理的短文本消息(例如邮件列表的“订阅”消息),而不是用于一般 MIME 正文。
因此,不同的浏览器和邮件客户端如何处理它并不是重点。我想说您在 Firefox 中观察到的行为更符合标准;由于 mailto 链接预计会创建纯文本电子邮件,因此 HTML 标记按原样(或者它们可能在底层编码为 HTML 实体)传递给邮件客户端,以纯文本形式显示。从同样的意义上说,邮件客户端从 mailto 链接创建纯文本电子邮件也是合理的。
解决方案
您的问题的答案很简单,不要在 mailto body 字段中使用 HTML。它是非标准的,因此您不能期望在不同的邮件客户端和浏览器中获得一致的支持。
推荐阅读
- python-3.x - 如何突出显示嵌入 discord.py-rewrite 的命令
- python - 如何使用插入/修改/删除将 dynamodb 设计为弹性搜索
- graphql - 使用reason-apollo时如何重命名变量(bs.as风格)?
- linux - makeself 将启动脚本作为源脚本运行
- java - 为什么 JMM 产生 (0, 0) 即使它被认为是禁止的结果
- graphql - graphql 查询到 graphiql 中的 json 查询
- c - 如何在 C 中获取打开的 fd 的标志?
- sorting - 按不同的日期格式排序(mmddyyyy)-xslt
- python - 中文文本的 TF-IDF 算法
- python - Pandas 读取 CSV 日期时间列绘图