我正在使用 ImapX lib 接收来自 Gmail 的电子邮件。
我得到了多种类型的 Content-Type 和 Content-Encoding-Trafering 的电子邮件正文。如何解码?
我正在使用 ImapX lib 接收来自 Gmail 的电子邮件。
我得到了多种类型的 Content-Type 和 Content-Encoding-Trafering 的电子邮件正文。如何解码?
MIME 标准记录在 RFC 2045 到 2048 中。您可能不想阅读所有这些标准,但在尝试处理 MIME 之前,您当然应该对 MIME 有基本的了解。 http://en.wikipedia.org/wiki/MIME是一个很好的起点。
Content-Transfer-Encoding
可以有五个不同的值之一;其中, 7bit
, 8bit
, andbinary
不需要任何解码(它们的不同之处在于您可以假设字符集和行长度;和之间的区别在于8bit
保证binary
行8bit
长度有限;尽管您肯定会在有时很狂野)。
因为你需要解码quoted-printable
;base64
但是任何相当现代的编程语言都已经为此提供了库函数。
Content-Type
层次结构基本上是无限的。顶级类型(text
、image
、audio
、application
等)和一组标准的子类型(text/plain
、text/html
等)数量有限,但正在注册更多类型,并且该标准不需要注册类型。无论如何,这些通常不需要解码;他们声明内容的类型,以便接收者知道如何处理它们。通用的包罗万象application/octet-stream
基本上意味着“这里有一个数据块;希望人类接收者知道如何处理它”,对于许多类型,除了下载到本地磁盘之外,没有任何明智的默认操作。所有通用电子邮件客户端都将text/plain
直接向用户显示,除非Content-Disposition
否则需要,大多数现代客户端将显示text/html
和其他几种内联类型。但是,您想要对内容做什么首先取决于您正在编写什么样的应用程序。