电子邮件客户端如何读取 content-type headers 进行编码?

How does an email client read the content-type headers for encoding?

可以发送具有不同内容类型的电子邮件:text/html、text/plain、mime 等。也可以使用不同的编码,包括(根据 RFC) header 字段:us-ascii、utf8 等

你是如何解决先有鸡还是先有蛋的问题的? content-type header 只是几个 header 之一。如果 headers 可以是任何编码,如果邮件服务器或客户端不知道 headers 本身是什么编码,它如何知道如何读取 content-type header在吗?

我可以看到第一行,例如必须是 content-type 并且必须采用 pre-agreed 编码(例如 ascii),但事实并非如此。

如何解析其编码作为字符串嵌入到同一流中的字节流?

Headers 定义为 ascii。如果同意带外,它们可以是 utf-8,例如通过 smtp 或 imap utf-8 功能扩展。

header 中的国际化是通过 "encoded words" 执行的,其中编码是 header 数据的一部分。 (这看起来像 =?iso8859-1?q?sample_header_data?= 这样的字符串)。参见 rfc2047。

内容类型 header 不适用于 header 本身,仅适用于 body 内容。