【问题标题】:Are binary characters legal in MIME headers?MIME 标头中的二进制字符是否合法?
【发布时间】:2011-04-25 10:05:36
【问题描述】:

我在一个处理电子邮件的服务器上工作,作为其中的一部分,我们进行了一些 MIME 解析/编码。我最近遇到了一个问题,该消息在其他情况下有效,但在 MIME 标头中包含 Latin-1 字符。有人向多个收件人输入了包含 Latin-1 字符的电子邮件地址,因此 SMTP 信封仅包含有效收件人,但收件人行仍包含无效地址和编码不正确的字符串。

我的印象是这是非法的,并且 MIME 标头必须是 7 位。 MIME 标头中的 8 位值必须以格式编码

=?charset?encoding?encoded text?=

有问题的标题是这样的:

To: <changéd@someplace.com>, <secondaddress@someplace.com>

我的问题是:这是有效的 MIME,我只是不知道吗?

【问题讨论】:

    标签: character-encoding mime


    【解决方案1】:

    电子邮件地址,如

    changéd@someplace.com
    

    完全合法if 字符以 UTF-8 编码,if 服务器支持 SMTPUTF8,它是 SMTP 的扩展。服务器通过使用 SMTPUTF8 关键字响应 EHLO 来宣传支持:

    250-SMTPUTF8
    

    客户端通过在 MAIL 命令上添加 SMTPUTF8 参数来使用扩展:

    MAIL FROM:<changéd@someplace.com> SMTPUTF8
    

    遗憾的是,目前对该扩展的支持很少。

    有关详细信息,请参阅 RFC 6531:https://www.rfc-editor.org/rfc/rfc6531

    【讨论】:

      【解决方案2】:

      来自RFC2822Internet 消息格式,第 2.2 节,标题字段

      标题字段是由字段名称后跟冒号组成的行 (":"),后跟字段正文,并以 CRLF 终止。一个领域 名称必须由可打印的 US-ASCII 字符组成(即, 值介于 33 和 126 之间的字符),除了 冒号。字段主体可以由任何 US-ASCII 字符组成, 除了 CR 和 LF。但是,字段正文可能包含 CRLF 用于标题“折叠”和“展开”,如章节中所述 2.2.3。所有字段主体必须符合中描述的语法 本标准的第 3 和 4 节。

      因此,任何非 ASCII 字符都是非法的。

      【讨论】:

        【解决方案3】:

        RFC 822 says:

         address     =  mailbox                      ; one addressee
         mailbox     =  addr-spec                    ; simple address
         addr-spec   =  local-part "@" domain        ; global address
         local-part  =  word *("." word)             ; uninterpreted
         word        =  atom / quoted-string     
         atom        =  1*<any CHAR except specials, SPACE and CTLs>
         CHAR        =  <any ASCII character>        ; (  0-177,  0.-127.)
        

        知道了吗?您的选择是“引用字符串” - =?charset?encoding?encoded text?=

        【讨论】:

        • 是的,我肯定知道地址无效,但我并没有尝试解析 To: 行本身以进行解释。我只是想知道在 MIME 标头中包含非 ASCII 字符是否有效。
        猜你喜欢
        • 2019-02-25
        • 1970-01-01
        • 2015-07-19
        • 1970-01-01
        • 2018-08-30
        • 2014-04-25
        • 2019-06-19
        • 2011-11-29
        • 1970-01-01
        相关资源
        最近更新 更多