电子邮件主题是否需要html转义?

时间:2012-06-12 18:21:56

标签: email html-email

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

3 个答案:

答案 0 :(得分:8)

无需在主题行中对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字符都能正常工作。

答案 1 :(得分:2)

主题字段是“HTML内容”的。它与HTML没有任何关系。


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

答案 2 :(得分:2)

主题不需要被html转义,但是,它们可以被转义。原始SMTP规范定义了消息应为ascii(RFC822第3节)。这已在RFC2822中得到确认,但RFC2047定义了标头扩展,允许您对mime消息中的标头字段进行编码以允许非ascii文本。

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

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

这是“这是一些文字”的ISO-8859-1编码版本。此方法可用于输入井号(£)或重音/非ascii字符等内容。