SMTP点填充-谁做,谁删除

SMTP点填充-谁做,谁删除,smtp,smtpclient,Smtp,Smtpclient,我写了一个电子邮件客户端,并不时注意到,在一些收到的邮件链接失败,因为在一个URL中有两个点,其中应该有一个 通过调查,我发现在所有这些情况下,两点都位于引用的可打印HTML行的开头 在阅读RFC2821时,我发现这可能是因为点填充。我的问题基本上是,谁应该做点填充,谁应该删除它 如果我们取一个简单的序列,我们得到如下结果: A ----> B ----> C ----> D 其中A是发送客户端,B是A向其发送邮件的SMTP服务器,C是收件人的SMTP服务器,D是接收客户

我写了一个电子邮件客户端,并不时注意到,在一些收到的邮件链接失败,因为在一个URL中有两个点,其中应该有一个

通过调查,我发现在所有这些情况下,两点都位于引用的可打印HTML行的开头

在阅读RFC2821时,我发现这可能是因为点填充。我的问题基本上是,谁应该做点填充,谁应该删除它

如果我们取一个简单的序列,我们得到如下结果:

  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服务器收到一行邮件文本时,它会进行检查 排队。如果该行由单个周期组成,则为 视为邮件结束指示器。如果第一个字符是 句号,行中还有其他字符,第一个 字符被删除


A在发送时添加一个点。B删除接收时的点。然后,B应添加要发送的点。C应该在接收时删除额外的点,D可能使用POP3或IMAP从C收集?POP和IMAP也会进行点填充,因此,如果您在从C到D的最后一段上有一个协议,那么您也需要审核这些协议以查找错误源。