Email 76个字符作为电子邮件MIME部分长度限制的原因是什么(RFC 2045)?

Email 76个字符作为电子邮件MIME部分长度限制的原因是什么(RFC 2045)?,email,smtp,base64,mime,rfc,Email,Smtp,Base64,Mime,Rfc,RFC 2045将编码数据的最大行长度定义为76。然而,我找不到任何解释来解释为什么它是76。这个数字是完全任意的,还是背后有某种原因?RFC2822是电子邮件的传统标准。 在RFC2822第2.1.1节中,您可以找到如下原因: 它也会影响MIME 本标准对用户数量有两个限制 一行中的字符。每行字符不得超过 998个字符,且不应超过78个字符,不包括 CRLF 998字符的限制是由于许多实现中的限制 发送、接收或存储Internet消息格式消息的 一行不能处理超过998个字符。接收 实现可以很好

RFC 2045将编码数据的最大行长度定义为76。然而,我找不到任何解释来解释为什么它是76。这个数字是完全任意的,还是背后有某种原因?

RFC2822是电子邮件的传统标准。 在RFC2822第2.1.1节中,您可以找到如下原因: 它也会影响MIME

本标准对用户数量有两个限制 一行中的字符。每行字符不得超过 998个字符,且不应超过78个字符,不包括 CRLF

998字符的限制是由于许多实现中的限制 发送、接收或存储Internet消息格式消息的 一行不能处理超过998个字符。接收 实现可以很好地处理任意大的数量 为了稳健性,在一行中使用字符。然而,也有这样的情况 许多实现(符合传输要求) [RFC2821]的要求不接受包含更多信息的消息 超过1000个字符,包括每行的CR和LF,这很重要 对于不创建此类消息的实现

更保守的78个字符的建议是适应 显示这些内容的用户界面的许多实现 可能会截断或灾难性地包装显示的消息 每行超过78个字符,尽管 实现不符合本文的意图 规范(以及[RFC2821]的规范,如果它们确实导致 信息将丢失)。再说一次,即使这一限制被施加 消息,它会妨碍显示消息的实现 在一行中处理任意多的字符 (当然至少可以达到998字符的限制)为了
健壮性。

与用户界面有关的部分


基本上,80个字符(通常为25或30行)是最常见的显示标准。78提供了一个合理的标准,因为它允许使用一些小的装饰(边框)。

实际上,最初的RFC 822定义了72个字符的限制,罪魁祸首是,这是早期计算机的标准输出设备

您还可以“感谢”电传打字机设备,因为电子邮件(和窗口)中的线路终止符为2个字符,即CR(回车)和LF(换行符)

为了使电传打字机将插入符号移动到位置0并将纸张向前推进一个勾号,必须在每行末尾传输该序列


当RFC 2822淘汰原来的设备时,没有人使用电传打字机来发送电子邮件,因此为了适应默认的TTY监控设备,它被放宽了一点。

包括终止回车和换行在内的最大行长为80,这源自于旧的穿孔卡,其中包含多达80列的孔。
为什么是80?因为在任何一本书中,一行包括空格在内的长度很少超过80个字符。
这意味着最大行长为80,包括终止回车(将电传打字机或打字机的回车移到最左边的位置)和换行(将纸张提前一行)。
因为Base64是4个字符的倍数,所以我们得到的最大值为76,不包括CR+LF。
另一个例子是描述卫星轨道的TLE(双线元素集)。它只适合两张穿孔卡片。
因为CR(水平移动到最左边,保持垂直位置)和LF(垂直移动到下一行,保持水平位置不变)是两个完全独立的东西,我们仍然拥有它们。下一行应该从最左边的位置开始,不是吗?
对于粗体打印,一行打印两次,中间只有一个CR,即不推进纸张。因此,标准顺序是先CR,然后LF

然而,好的老式机械打字机通常先做LF,然后做CR。

这可能与旧时代常见的80个字符宽度限制有关。这很好,但RFC2045限制是76,而不是78。你知道这是怎么回事吗?可能是76+2(CRLF)不,76而不是78的原因是每个base64行必须是4个字符长的倍数。76=4 x 19。不清楚为什么也适用于引用的可打印文件。可能是因为对所有mime编码的一个限制更简单,也更不容易出现实现错误。