推理76后面是MIME部分的行长限制,如RFC 2045所定义的那样?

时间:2011-02-14 16:17:01

标签: email base64 mime

RFC 2045将编码数据的最大行长度定义为76 - 但是我找不到任何解释为什么它是76.这个数字是完全随意的,还是有一些推理呢?

4 个答案:

答案 0 :(得分:9)

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

此标准对数量有两个限制    一行中的字符。每行字符必须不超过    998个字符,不应超过78个字符,不包括    CRLF。

998字符限制是由于许多实现中的限制    发送,接收或存储Internet消息格式消息    根本无法处理一行超过998个字符。接收    实现可以很好地处理任意大的数字    为了鲁棒性,一行中的字符。但是,有这样的    许多实施(符合运输    [RFC2821]的要求不接受包含更多内容的消息    超过1000个字符,包括每行的CR和LF,这很重要    对于不创建此类消息的实现。

更为保守的78字符建议是适应    显示这些的用户界面的许多实现    可能截断或灾难性地包装显示的消息    尽管如此,每行超过78个字符    实现不符合此意图    规范(和[RFC2821]的规范,如果它们确实导致    信息丢失)。同样,即使有这种限制    消息,它是显示消息的实现的障碍    在一行中处理任意大量的字符    (当然至少达到998字符限制)为了这个目的    的鲁棒性。

答案 1 :(得分:3)

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

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

必须在每行的末尾传输此序列,以便电传打字机将插入符号移动到位置0并使纸张向上移动。

当RFC 2822废弃原版时,没有人使用电传类型来呈现电子邮件,因此为了适应默认的TTY监视器设备,它稍微放松了。

答案 2 :(得分:1)

与用户界面有关的事项

http://en.wikipedia.org/wiki/Text_mode#PC_common_text_modes

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

答案 3 :(得分:0)

最长的80行长度(包括终止的回车和换行)来自于良好的旧打孔卡,其中包含多达80列孔。
为什么是80?因为在任何一本书中,一行很少超过80个字符(包括空格)。
这意味着最大行长为80,其中包括终止的回车(将电传打字机或打字机的支架移动到最左侧的位置)和换行(将纸张前进一行)。 由于Base64是4个字符的倍数,因此我们最终最多可以有76个字符,不包括CR + LF。
另一个示例是TLE(两线元素集),它描述了卫星的轨道。它只适合两张打孔卡。
由于CR(水平移动到最左边,保持垂直位置)和LF(垂直移动到下一行,保持水平位置不变)是两个完全独立的事物,所以我们仍然同时拥有它们。下一行应该从最左边的位置开始吗?
为了以粗体打印,一行被打印了两次,中间只有一个CR,即不前进纸。因此,标准序列首先是CR,然后是LF。
但是,老式的机械打字机通常先做LF,然后做CR。