10

我即将在可能包含不安全用户输入的代码中发送 html 电子邮件。我注意到,如果我对主题进行 html 转义,GMail 将显示转义的内容(因此,如果我的主题是"This & That",我将其清理为"This & That",Gmail 将显示后者)。雷鸟也是如此。假设所有电子邮件客户端都不需要转义主题 html 是否安全?

4

3 回答 3

12

无需在主题行中编码 HTML 实体。在 HTML 正文中进行编码的原因是,如果您使用 XHTML,因为它源自 XML,所以将&其视为保留字符。

但是,电子邮件的主题行不是 HTML、XML 或 XHTML。这只是纯文本。因此,您不需要将 & 符号编码为&. 如果您对它进行编码,因为它没有被解析为 HTML,它将显示为已编码。

如果您想包含非 ASCII 字符(例如£),那么您需要将整个“信封”(包括电子邮件正文)编码为 UTF-8。

因此,在代码中,以下内容将显示为:

        | Subject Line |    Body
====================================
&   |    &     |     &       
&       |      &       |     & 
UTF-8 £ |      £       |     £
ASCII £ |     n/a      |    n/a
£ |   £    |     £

注意:Microsoft Office 有一个奇怪的 UTF-8 实现,所以不是所有的 UTF-8 字符都可以工作。

于 2012-06-17T08:17:28.237 回答
3

主题不需要进行 html 转义,但是可以转义。最初的 SMTP 规范定义消息应该是 ascii(RFC822第 3 节)。这在RFC2822中得到了证实,但是RFC2047定义了标题扩展,允许您对 mime 消息中的标题字段进行编码以允许非 ascii 文本。

这种编码字格式允许您在电子邮件标题中使用像 utf-8 这样的编码。例如:

=?iso-8859-1?q?this=20is=20some=20text?=

这是“这是一些文本”的 ISO-8859-1 编码版本。此方法可用于对诸如英镑符号 (£) 或重音/非 ascii 字符之类的内容进行 enode。

于 2012-06-13T14:03:23.583 回答
2

主题字段位于“HTML 内容”之外。它与 HTML 没有任何关系。


但是,我没有这方面的参考......

于 2012-06-12T18:31:36.083 回答