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