【发布时间】:2010-06-10 17:30:06
【问题描述】:
我有一个从 pop3 帐户读取电子邮件的应用程序。当我连接到该帐户时,我会下载所有新电子邮件并处理正文和附件。
如果处理其中一封电子邮件时出现错误,我想在下次连接时再次下载它,但由于我只收到新电子邮件并且失败的电子邮件已经下载,所以我没有收到它,所以我无法尝试再次处理。
我可以使用任何 pop3 命令执行此操作,还是必须在本地存储失败的电子邮件?
【问题讨论】:
我有一个从 pop3 帐户读取电子邮件的应用程序。当我连接到该帐户时,我会下载所有新电子邮件并处理正文和附件。
如果处理其中一封电子邮件时出现错误,我想在下次连接时再次下载它,但由于我只收到新电子邮件并且失败的电子邮件已经下载,所以我没有收到它,所以我无法尝试再次处理。
我可以使用任何 pop3 命令执行此操作,还是必须在本地存储失败的电子邮件?
【问题讨论】:
只要您在下载邮件后不删除邮件,它们就应该保留在服务器上,以便您可以再次检索它们。换句话说,这应该默认发生。详情请见RFC 1939。
您使用的是什么 POP3 客户端库?
编辑:我猜您的 POP3 服务器可能会在您检索一次邮件后删除邮件,尽管这样会很粗鲁。在免费的 POP3 服务器(如 GMail)上运行您的客户端代码,看看它的行为是否有所不同,这可能会很有趣。
如果您没有对您的 POP3 连接进行 SSL 加密,那么运行 Wireshark 以查看您的客户端和服务器之间的网络究竟发生了什么可能也很有趣。 (POP3 是一种纯文本协议,通过查看网络跟踪很容易理解。)要使用 Wireshark,请在 Capture 菜单下,选择 Options,确保选择了您的接口,输入“tcp port 110”的 Capture Filter ",然后按开始。
如果您愿意发布您的客户端代码,我们或许可以提供更多帮助。
【讨论】: