【问题标题】:Does .Net MailMessage auto fold header fields longer than RFC2822 max length?.Net MailMessage 是否自动折叠标题字段长于 RFC2822 最大长度?
【发布时间】:2011-04-02 18:02:38
【问题描述】:

请参阅RFC 2822,第 2.1.1 和 2.2.3 节开始

如果标题字段的内容超过最大长度限制,System.Net.Mail.MailMessage 是否会自动折叠其标题字段? RFC2822 规定标头字段每行不得超过 998 个字符。为了解决这个问题,可以插入 CRLF 以使标题字段占用多于一行。

想法?

【问题讨论】:

    标签: .net email standards


    【解决方案1】:

    MailMessage 类至少在使用SmtpClient 发送之前不会进行任何自动折叠。只有在发送消息时,.NET 才会自动折叠标头字段以构造 MIME 消息。您可以在消息发送后访问MailMessage.Headers 进行检查。

    折叠可能发生在多个位置,具体取决于是否需要预先对标头字段进行编码。例如,如果主题包含非 US-ASCII 字符,则必须使用 Base64 或 Q 编码进行编码。在这种情况下,负责编码的类也会进行折叠。

    如果你使用 Reflector,你可以看看 MailWriter 类,它是执行折叠的类之一,至少在 .NET 2.0 中,使用推荐的默认行限制,即每行 78 个字符按照 RFC2822 中的规定。

    每行字符必须是 no 超过 998 个字符,并且应该 不超过 78 个字符, 不包括 CRLF。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      相关资源
      最近更新 更多