【问题标题】:Do email subjects need to be html escaped?电子邮件主题是否需要进行 html 转义?
【发布时间】:2012-06-15 16:20:09
【问题描述】:

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

【问题讨论】:

    标签: email html-email


    【解决方案1】:

    无需在主题行中编码 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 字符都可以工作。

    【讨论】:

    • 虽然您不需要对主题进行 H​​TML 编码,但请务必根据其所在的上下文对其进行清理:HTTP 标头。删除像\n\r这样的换行符!
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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


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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-26
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 2011-02-11
        • 1970-01-01
        • 2014-11-09
        • 1970-01-01
        相关资源
        最近更新 更多