当Gmail作为POP3服务器以编程方式使用时,它表现出哪些非标准行为特征?

11

我正在尝试准备一个完整的行为列表,列出Gmail POP3表现出来的所有行为,这些行为是通常在POP3服务器中不会发现的。

例如,Gmail似乎忽略了来自POP3客户端的DELE(删除)命令。相反,它实现了自己的删除和归档策略。

准备这个列表的目的是为了避免开发人员测试POP3客户端与Gmail POP3服务器的连接,并假设所有POP3服务器都以相同的方式运作。

是否有人可以提供更完整的非标准行为列表呢?

1个回答

26

我无法提供完整的列表,但我可以提供我所知道的:

  • 获取电子邮件将会隐藏它,并且除非您重新设置gmail pop3设置(再次设置),否则在所有后续POP3会话中都将被隐藏。
    更准确地说:我发现这仅适用于RETR命令,而不适用于TOP命令。我还注意到,如果在发出RETR命令后没有发送QUIT命令,则消息将保留在服务器上以供以后的会话使用。因此,可以获取消息并立即关闭连接,而gmail将使消息对下一个会话可见。
  • 根据您的gmail设置,已获取的电子邮件也可以从您的gmail Web界面中删除。
  • 以特殊的“recent:”作为用户名登录将显示在过去30天内收到的电子邮件,无论是否已发送给其他POP3客户端。

这些是我所知道的gmail pop3服务的唯一非标准行为。大部分信息我是作为OpenPop.NET的开发者收集的。

有用的参考资料:


我修改了我的回复以使其更加精确。关于RSET命令:当获取电子邮件时,只要我们在同一个POP3会话中,这些电子邮件对客户端仍然可见。因此,我不理解您关于RSET命令的问题。RSET命令只是取消标记为已删除的那些消息,但只有在您对它们发出DELE命令时才会将它们标记为已删除。 RSET不能恢复在之前的POP3会话中删除的消息-使用QUIT命令时标记为已删除(使用DELE命令)的消息将被永久删除。 - foens
谢谢。我的问题关于RSET命令是基于这样的假设:使用RETR命令导致的隐式删除是RSET命令可能逆转的唯一删除。我还假设DELE命令没有效果。您通过解释DELE命令和RSET命令如何按预期工作来澄清了这一点,对于任何POP3服务器都是如此。因此,在RETR、DELE和RSET命令空间中唯一的非标准行为是,如果使用QUIT命令正确结束会话,则已经RETR(ieved)的电子邮件将从未来的POP3会话中隐藏。 - Mike Green
实际上,RFC中指定了CAPA EXPIRE命令的值为0,以告知客户端消息不会留在服务器上。也许GMAIL支持这个命令。 - foens
+1 我也需要从Gmail中检索邮件,这非常有用。感谢您的研究和辛勤工作。 - JYelton
+1 我希望我能给更多的加一。非常棒和难得的信息。 - Auxiliary
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接