Email SMTP点填充。。何时何地做?

Email SMTP点填充。。何时何地做?,email,smtp,rfc,Email,Smtp,Rfc,在发送电子邮件时,我发现有关点填充的信息存在冲突 如果行包含单个点,则填充一个点(以避免过早终止) 每行填充一个点,以点开始 仅在引用的可打印消息部分的(1)和每行部分填充一个点 有人能澄清一下吗?在SMTP协议中,邮件以单点和换行符终止 简单来说,比如: \r\n。\r\n 人物: 点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵 它对应于一行开头的一个点 如果邮件数据中包含单个。在行的开头,后面跟着一个新的行字符,那么SMTP协

在发送电子邮件时,我发现有关点填充的信息存在冲突

  • 如果行包含单个点,则填充一个点(以避免过早终止)
  • 每行填充一个点,以点开始
  • 仅在引用的可打印消息部分的(1)和每行部分填充一个点

  • 有人能澄清一下吗?

    在SMTP协议中,邮件以单点和换行符终止

    简单来说,比如:

    \r\n。\r\n

    人物:

    点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵点阵

    它对应于一行开头的一个点

    如果邮件数据中包含单个。在行的开头,后面跟着一个新的行字符,那么SMTP协议将把它看作是邮件终止,因此只有一部分邮件将被传送。
    因此,整个想法是通过填充一个额外的点来避免这种情况。

    根据SMTP标准RFC 5321,第4.5.2节:

    为了使所有用户编写的文本能够透明地传输,使用了以下步骤:

    • 在发送一行邮件文本之前,SMTP客户端将检查该行的第一个字符。如果是句点,则在行首插入一个额外的句点
    • 当SMTP服务器收到一行邮件文本时,它会检查该行。如果行由单个时段组成,则将其视为邮件结束指示器。如果第一个字符是句点,并且行中还有其他字符,则删除第一个字符

    因此,从你问题的三点来看,第二点是正确的

    实用答案:如果您使用的是引用的可打印格式,则始终将点转换为=2E。您不能依赖所有smtp服务器正确执行点删除


    如果你想假设整个世界都符合标准,那么就按照上面的答案2来做。

    这并不能回答我的问题。如果服务器在一条线上只删除了两点中的一点,那么它正按照标准的规定来做。当原始消息行的第一个字符是句点时,客户端会在发送消息之前添加另一个句点。然后,服务器删除添加的句点。我的意思是,如果整行只包含两个点,它只删除两个句点中的一个。示例:\r\n..\r\n但不适用于任何其他行。我想现在我明白了重点。解决方案取决于您正在实现的代理(MTA、MDA)。可能您可以识别不符合RFC的服务器,并处理消息以保留原始文本。我的问题不是发送者是接收者。我正在发送DKIM签名的电子邮件,一些服务器因此而失败。我花了几个月的时间认为这是我的错,但最终我设法确定这是他们方面的问题。奇怪的是,他们使用了各种已知的代理,但我想他们一定做了一些修改。时间越长,我看到的不合规的混乱越多,我记得你的答案也越多。谢谢