为什么" - "(连字符)是电子邮件兼容性的唯一ASCII限制?

Cœu*_*œur 7 email ascii smtp base91

我正在阅读Base91的这个提议,(我添加了粗体格式):

所有基于SMTP的电子邮件都可以提供与电子邮件的兼容性.所谓的与电子邮件的兼容性是将任意8位数据字节串或由电子邮件传输的任意位流数据转换为有限ASCII的字符串.对后者的主要限制是:
(a)字符必须是可打印的;
(b)字符不是控制字符或" - "(连字符).
共有94个这样的ASCII字符,它们相应的数字编码是从32到126的整数,除了45.以这些ASCII字符编写的电子邮件与Internet标准SMTP兼容,并且几乎可以在所有电子邮件系统中传输.

注意:45是连字符的ASCII值.
注意:我刚才发现该提案源自中国(ZL00112884.1)和美国(US6859151B2)的专利.

但我也阅读了有关SMTP 的RFC 5321,我找不到任何使连字符成为可打印ASCII范围的独有限制的内容.

注意:可打印的ASCII范围是:
!"#$%&'()*+, - ./ 0123456789 :; <=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ [\] ^ _` abcdefghijklmnopqrstuvwxyz {|}〜

为什么Base91提案/专利声称" - "(连字符)是电子邮件兼容性的唯一限制?

Edw*_*hen 5

看起来连字符用作多行SMTP邮件中的控件/标记字符.

RFC5321 4.2.1回复代码严重性和理论:

多行回复的格式要求除了最后一行之外的每一行都以回复代码开头,后面紧跟一个连字符" - "(也称为减号),后跟文本.最后一行将以回复代码开头,紧接着是<SP>,可选的是一些文本和<CRLF>.如上所述,服务器应该发送<SP> if后续文本,但是客户端必须准备好省略它.

Base91提案使用SMTP作为其应用程序和限制的示例.正如您所说,它最初想要使用94个字符,但由于各种标准(例如SMTP),它排除了常用的伪控制字符(" - ",".","=").它使用SMTP,因为它证明了Base91编码的实用性(例如,每个字符编码13位数据而不是Base64的6位可以大大减少编码任何给定消息所需的位数)除了确认它使用连字符作为控制字符不会导致Base91文本的歧义.

任何文本都可以由Base91编码 - 该文件指出它将13位数据映射为两个可打印的ASCII字符.任何数字,任何字符(包括新行字符)都可以由Base91编码,类似于Base64编码任何字符的方式.同样,可以反转此映射,以从Base91编码生成原始输出.

这是一个多行SMTP回复代码示例:

  250-First line
  250-Second line
  250-234 Text beginning with numbers
  250 The last line
Run Code Online (Sandbox Code Playgroud)

在此示例中,它将包含连字符,换行符和数字的大型多行SMTP邮件转换为某种Base91编码形式.如果此编码形式包含伪控制字符(例如连字符),则SMTP客户端可能会将Base91编码的数据解释为格式错误的SMTP数据.从Base91字符集中删除连字符等字符的目的不是因为SMTP的缺陷或SMTP本身的规范,而是客户端使用和解析SMTP数据,并确保客户端仍能正确接受Base91数据而没有任何风险将其误解为SMTP数据.