来自http://www.faqs.org/rfcs/rfc2822.html:
CR 和 LF 必须仅作为 CRLF 一起出现;它们不得独立出现在体内。
我们有一个发送确认电子邮件的网络服务,但我们的一位用户指出这不符合 rfc2822 标准。所以我的问题是,为什么 CR 和 LF 在电子邮件消息中一起出现很重要?
来自http://www.faqs.org/rfcs/rfc2822.html:
CR 和 LF 必须仅作为 CRLF 一起出现;它们不得独立出现在体内。
我们有一个发送确认电子邮件的网络服务,但我们的一位用户指出这不符合 rfc2822 标准。所以我的问题是,为什么 CR 和 LF 在电子邮件消息中一起出现很重要?
因为它在公认的 RFC 中?
实现源自 RFC。如果不是这种情况,则无法保证不同实现之间的互操作性。要求它们一起出现可能有也可能没有具体的技术原因,但在这种情况下,这些原因是无关紧要的。这是一个简单的问题,“因为他们这么说”。
想想旧的电传打字机。CR 将写入头返回到行首,LF 将纸张向前滚动一行。您需要这两个步骤来开始新的一行。如果你使用 CR 没有 LF,你会覆盖相同的文本,这当然是非法的。
无论如何,这是将 CR+LF 定义为新行的 ASCII 代码的历史原因。当然最终它只是任意代码。有些系统只使用 CR 来表示换行,有些系统只使用 LF,有些则完全使用不同的字符。RFC2822 只好选择了一个,并决定只允许 CRLF 序列。
由于 RFC 决定使用 CRLF,因此单独禁止 CR 或 LF 是有意义的,因为无论如何处理这将是非常无用且有问题的。
因为在电子邮件中 CRLF 是行分隔符。如果您只使用 CR 或仅使用 LF,您将遇到各种客户端、SMTP 服务器组合的各种意外问题。有些服务器会拒绝您的电子邮件,有些会“修复”您的电子邮件。固定电子邮件是处理起来最有趣的一些。
如果不是你最终得到一个 CR,它把你放在同一行,那么无论你写什么都将在同一行左侧的字符顶部,然后是 LF,你在中间的某个列中重新开始写作。乱。