我写了一个电子邮件客户端,不时发现一些收到的邮件中的链接失败了,因为URL中有两个点应该有一个.
通过调查,我发现在所有这些情况下,这两个点位于引用可打印HTML行的开头.
在阅读RFC 2821时,我发现这可能是因为点填充而发生的.我的问题基本上是,谁应该做点填充,谁应该删除它?
如果我们采用简单的序列,我们有如下:
A ----> B ----> C ----> D
Run Code Online (Sandbox Code Playgroud)
其中A是发送客户端,B是A发送邮件的SMTP服务器,C是收件人的SMTP服务器,D是接收客户端.
RFC 2821似乎说如果一行以点开头,A应该添加一个额外的点,而B应该删除它(这对我来说是有道理的).然而,我在实践中观察到的是,如果A忘记了,B会添加一个点,否则什么都不做.到达D的邮件没有删除额外的点.我是否误解了RFC,因此删除额外的点是D的工作吗?
小智 7
请参阅SMTP标准RFC2821第4.5.2节:
http://tools.ietf.org/html/rfc2821#section-4.5.2
允许透明传输所有用户组合文本,使用以下过程:
在发送一行邮件文本之前,SMTP客户端会检查该行的第一个字符.如果是句点,则在行的开头插入一个附加句点.
当SMTP服务器收到一行邮件文本时,它会检查该行.如果该行由单个句点组成,则将其视为邮件结尾指示符.如果第一个字符是句点并且该行上还有其他字符,则删除第一个字符.
| 归档时间: |
|
| 查看次数: |
2959 次 |
| 最近记录: |