C# 电子邮件中有多少种内容类型和内容编码以及如何解码?

C# 电子邮件中有多少种内容类型和内容编码以及如何解码?,c#,email,gmail,imap,email-client,C#,Email,Gmail,Imap,Email Client,我正在使用ImapX库接收来自Gmail的电子邮件 我得到了很多类型的内容类型和内容编码的邮件正文。 如何解码?MIME标准记录在RFCs 2045到2048中。您可能不想全部阅读,但在尝试处理MIME之前,您肯定应该对MIME有一个基本的了解。这是一个很好的起点 内容传输编码可以有五个不同的值之一;其中,7bit、8bit和binary不需要任何解码(它们在关于字符集和行长度的假设上有所不同;8bit和binary之间的区别在于8bit保证具有有限长度的行;尽管您有时肯定会在野外看到这种情况)

我正在使用ImapX库接收来自Gmail的电子邮件

我得到了很多类型的内容类型和内容编码的邮件正文。
如何解码?

MIME标准记录在RFCs 2045到2048中。您可能不想全部阅读,但在尝试处理MIME之前,您肯定应该对MIME有一个基本的了解。这是一个很好的起点

内容传输编码可以有五个不同的值之一;其中,
7bit
8bit
binary
不需要任何解码(它们在关于字符集和行长度的假设上有所不同;
8bit
binary
之间的区别在于
8bit
保证具有有限长度的行;尽管您有时肯定会在野外看到这种情况)

对于
quoted printable
base64
,您需要解码;但是任何合理的现代编程语言都已经有了相应的库函数


内容类型
层次结构基本上是无限的。顶层类型的数量有限(
文本
图像
音频
应用程序
,等等)和一组标准的子类型(
文本/普通
文本/html
,等等)但更多的内容正在注册,标准不要求注册类型。无论如何,这些内容通常不需要解码;它们声明内容的类型,以便接收者知道如何处理它们。通用的catch all是
application/octet stream
,这基本上意味着“这是一团数据;希望人类接收者知道如何处理这些数据"对于许多类型,除了下载到本地磁盘之外,没有任何合理的默认操作。所有通用电子邮件客户端将直接向用户显示
text/plain
,除非
Content Disposition
另有要求,并且大多数现代客户端将以内联方式显示
text/html
和其他几种类型。但是您想对内容做什么首先取决于您正在编写的应用程序的类型。

MIME标准在RFCs 2045到2048中有文档记录。您可能不想阅读所有这些标准,但在尝试处理MIME之前,您当然应该对其有一个基本的了解。这是一个很好的起点t

内容传输编码
可以有五个不同值中的一个;其中,
7bit
8bit
二进制
不需要任何解码(它们在关于字符集和行长度的假设上有所不同;
8bit
binary
之间的区别在于
8bit
保证具有有限长度的行;尽管您有时肯定会在野外看到这种情况)

对于
quoted printable
base64
,您需要解码;但是任何合理的现代编程语言都已经有了相应的库函数

内容类型
层次结构基本上是无限的。顶层类型的数量有限(
文本
图像
音频
应用程序
,等等)和一组标准的子类型(
文本/普通
文本/html
,等等)但更多的内容正在注册,标准不要求注册类型。无论如何,这些内容通常不需要解码;它们声明内容的类型,以便接收者知道如何处理它们。通用的catch all是
application/octet stream
,这基本上意味着“这是一团数据;希望人类接收者知道如何处理这些数据"对于许多类型,除了下载到本地磁盘之外,没有任何合理的默认操作。所有通用电子邮件客户端将直接向用户显示
text/plain
,除非
Content Disposition
另有要求,并且大多数现代客户端将以内联方式显示
text/html
和其他几种类型。但是,您想对内容做什么,首先是由您编写的应用程序类型决定的