【发布时间】:2011-04-02 18:02:38
【问题描述】:
请参阅RFC 2822,第 2.1.1 和 2.2.3 节开始
如果标题字段的内容超过最大长度限制,System.Net.Mail.MailMessage 是否会自动折叠其标题字段? RFC2822 规定标头字段每行不得超过 998 个字符。为了解决这个问题,可以插入 CRLF 以使标题字段占用多于一行。
想法?
【问题讨论】:
请参阅RFC 2822,第 2.1.1 和 2.2.3 节开始
如果标题字段的内容超过最大长度限制,System.Net.Mail.MailMessage 是否会自动折叠其标题字段? RFC2822 规定标头字段每行不得超过 998 个字符。为了解决这个问题,可以插入 CRLF 以使标题字段占用多于一行。
想法?
【问题讨论】:
MailMessage 类至少在使用SmtpClient 发送之前不会进行任何自动折叠。只有在发送消息时,.NET 才会自动折叠标头字段以构造 MIME 消息。您可以在消息发送后访问MailMessage.Headers 进行检查。
折叠可能发生在多个位置,具体取决于是否需要预先对标头字段进行编码。例如,如果主题包含非 US-ASCII 字符,则必须使用 Base64 或 Q 编码进行编码。在这种情况下,负责编码的类也会进行折叠。
如果你使用 Reflector,你可以看看 MailWriter 类,它是执行折叠的类之一,至少在 .NET 2.0 中,使用推荐的默认行限制,即每行 78 个字符按照 RFC2822 中的规定。
每行字符必须是 no 超过 998 个字符,并且应该 不超过 78 个字符, 不包括 CRLF。
【讨论】: