.net - .Net MailMessage 自动折叠 header 字段是否长于 RFC2822 最大长度?

标签 .net email standards

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

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

想法?

最佳答案

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

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

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

Each line of characters MUST be no more than 998 characters, and SHOULD be no more than 78 characters, excluding the CRLF.

关于.net - .Net MailMessage 自动折叠 header 字段是否长于 RFC2822 最大长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3549598/

相关文章:

laravel - 如何通过gmail smtp使用laravel发送邮件?

c# - 如何创建带有嵌入图像的 HTML 电子邮件并使用 .net (c#) 在默认邮件客户端中显示它?

c++ - 为什么不可能按值传递这种大小可变的参数?

c - scanf 'maximum field width' 包含空格?

c - 哪个版本的C更适合学生学习——C89/90还是C99?

c# - C#中的数组如何部分实现IList<T>?

发送带有附件的电子邮件时出现 java.lang.LinkageError

java - VB .NET 的计算方式与 Java 不同

c# - 为什么 WebClient.DownloadStringTaskAsync() 会阻塞? - 新的异步 API/语法/CTP

c# - 使用 .net 生成代码