我写了一个电子邮件客户端,并且不时注意到一些收到的邮件中的链接失败,因为 URL 中应该有一个点的两个点。
通过调查,我发现在所有这些情况下,两个点都位于一行引用打印的 HTML 的开头。
在阅读 RFC 2821 时,我发现这可能是由于点填充而发生的。我的问题基本上是,谁应该做点填充,谁应该删除它?
如果我们采取一个简单的序列,我们有如下:
A ----> B ----> C ----> D
其中 A 是发送客户端,B 是 A 向其发送邮件的 SMTP 服务器,C 是收件人的 SMTP 服务器,D 是接收客户端。
RFC 2821 似乎说如果一行以点开头,A 应该添加一个额外的点,而 B 应该删除它(这对我来说很有意义)。然而,我在实践中观察到的是,如果 A 忘记了,B 会添加一个点,否则什么都不做。到达 D 的邮件没有删除多余的点。我是否误解了 RFC,因此 D 的工作是删除多余的点吗?
最佳答案
请引用SMTP标准RFC2821第4.5.2节:
http://tools.ietf.org/html/rfc2821#section-4.5.2
允许所有用户编写的文本透明传输,
使用以下程序:
行的第一个字符。如果是句号,再加一个
句号插入行首。
线。如果该行由单个句点组成,则为
视为邮件结束指示符。如果第一个字符是
句号,该行还有其他字符,第一个
字符被删除。
关于SMTP 点填充 - 谁做的和谁删除它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8971703/