如何解码 7 位 plain/text 电子邮件正文(如何删除 CRLF)?

How to decode 7bit plain/text email body (how to remove CRLF)?

Content-Transfer-Encoding: 7bit
Content-Type: plain/text

根据rfc5322,您需要在 78 个字符后换行(添加 CRLF)。

我的问题是如何解码 text/body(删除 CRLF)?我怎么知道哪个 CRLF 是由编码器添加的,哪个是原始正文内容的一部分?我已经检查了一些实现,但大多数实现似乎都没有打扰,尽管在编码时强制执行了规则。

RFC 没有说您必须在 78 个字符后换行:

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

无法“解码”发送系统添加的 CRLF,收件人只会保持原样。

如果您不想修改消息,只需在少于 998 个字符的任何行中不添加换行符即可。

实际上,rfc5322 指出:

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

也就是说,建议将行限制为 78 个字符。

对于基于文本的 MIME 部分(例如您的示例中的部分),您有几个选项可以实现此目的:

  1. 使用text/plain; format=flowed。有关此格式的更多信息,请查看 rfc2646。从本质上讲,它提供了一种包装长行的方法,这种方法可由接收客户端取消(嘿!这正是 您想要的!)
  2. 使用不同的 Content-Transfer-Encoding,例如 quoted-printablebase64
  3. 允许行超过 78 个字符并希望它们不超过 998 个字符...但是如果你有超过 998 个字符的超长行,你基本上会遇到同样的问题,所以你最好的选择真的是遵循其他选项之一。