SMTP点填充-谁做,谁删除
我写了一个电子邮件客户端,并不时注意到,在一些收到的邮件链接失败,因为在一个URL中有两个点,其中应该有一个 通过调查,我发现在所有这些情况下,两点都位于引用的可打印HTML行的开头 在阅读RFC2821时,我发现这可能是因为点填充。我的问题基本上是,谁应该做点填充,谁应该删除它 如果我们取一个简单的序列,我们得到如下结果:SMTP点填充-谁做,谁删除,smtp,smtpclient,Smtp,Smtpclient,我写了一个电子邮件客户端,并不时注意到,在一些收到的邮件链接失败,因为在一个URL中有两个点,其中应该有一个 通过调查,我发现在所有这些情况下,两点都位于引用的可打印HTML行的开头 在阅读RFC2821时,我发现这可能是因为点填充。我的问题基本上是,谁应该做点填充,谁应该删除它 如果我们取一个简单的序列,我们得到如下结果: A ----> B ----> C ----> D 其中A是发送客户端,B是A向其发送邮件的SMTP服务器,C是收件人的SMTP服务器,D是接收客户
A ----> B ----> C ----> D
其中A是发送客户端,B是A向其发送邮件的SMTP服务器,C是收件人的SMTP服务器,D是接收客户端
RFC2821似乎说,如果一行以点开头,A应该添加一个额外的点,B应该删除它(这对我来说很有意义)。然而,我在实践中观察到的是,如果a忘记了,B会加上一个点,否则什么也不做。到达D的邮件没有去掉多余的点。我是否误解了RFC,因此删除额外的点是D的工作?请参考SMTP标准RFC2821第4.5.2节: 允许透明地传输所有用户编写的文本 使用以下程序:
- 在发送一行邮件文本之前,SMTP客户端将检查 行的第一个字符。如果是一个周期,则另加一个周期 句点插入行的开头
- 当SMTP服务器收到一行邮件文本时,它会进行检查 排队。如果该行由单个周期组成,则为 视为邮件结束指示器。如果第一个字符是 句号,行中还有其他字符,第一个 字符被删除