.Net MailMessage自动折叠标头字段是否长于RFC2822最大长度?

时间:2010-08-23 16:30:37

标签: .net email standards

参见RFC 2822,第2.1.1和2.2.3节开始

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

思想?

1 个答案:

答案 0 :(得分:4)

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

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

如果您使用Reflector,您可以查看MailWriter类的示例,该类是执行折叠的类之一,并且至少在.NET 2.0中使用建议的默认行限制为78个字符每行,如RFC2822中所述。

  

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