这是一个常见问题,不幸的是,它并不总是有最简单的解决方案。希望这些信息能帮助您和其他人找到适合您需求的最佳实施方案。免责声明:如果您可以选择或有能力将 IMAP 添加到您的 pop3 中,它肯定会使事情更易于管理。
Gmail 有自己的 Pop3 实现,话虽如此,并非所有这些都与其他 pop3 提供商相关
以下是问题的生命周期以及可以帮助您管理它的一些信息:
您可以在 NORMAL 模式或 RECENT 模式下连接到 pop3 服务器。这将弹出服务器上的“会话”置于“事务状态”。
通过在连接上的用户名前加上“recent:”+用户名来使用最近模式。最近模式将返回服务器上最近 30 天的电子邮件。注意*这将取代我将在下面讨论的 UIDL 命令。 IE。如果尚未删除,最近模式将返回所有 30 天的电子邮件。由于它总是返回最近 30 天的数据,因此如果您有多个客户,他们都将在最近模式下收到相同的信息。
正常模式是默认设置。正常模式将尊重您选择使用的命令的限制。 UIDL 将返回服务器上大约 250 封最旧的电子邮件。如果您在服务器上有 500 封电子邮件,并且您没有删除任何电子邮件,那么 UIDL 将返回前 250 封电子邮件的 id 和唯一标识符,因此您可能不知道新的 250 封电子邮件。这里的警告如下,GMAIL在您配置弹出的 Web 控制台上有一个选项,以“从现在开始启用弹出”。通过选择并保存,弹出服务器将使用当时的时间戳来“刷新”最旧的时间。因此,UIDL 将从那时开始向您返回消息,直到您再次达到 250 标记(假设您没有删除它们)。
请务必注意,在您发出 QUIT 命令之前,事务状态一直存在。发出该命令后,服务器进入“更新”状态,它将开始发出您请求的更新,如删除命令,或在下载后弹出它们。在成功发出 QUIT 之前,不会删除任何内容,服务器状态也不会改变。
STAT 命令将显示您服务器上 pop3 堆栈中的电子邮件数量。
RETR 命令将检索或下载电子邮件,但在您成功结束会话之前不会将其标记为已下载
如果您维护服务器的状态并弹出电子邮件,许多开发人员用来检索消息编号和唯一标识符的 UIDL 非常有用。 UIDL 只会返回最旧的 250-ish(我见过 251-255)电子邮件。如果您不断地轮询新电子邮件,如果电子邮件没有被删除,这是很危险的。还!如果您需要删除电子邮件,请确保在 Web 控制台中配置了 GMAIL 设置,即在我的收件箱中保留一份副本,以便您可以访问这些电子邮件作为备份。
LIST 命令将解决您在正常模式下获取超过 250 封电子邮件的问题,(注意:您仍然需要在本地维护一个 id 文件来交叉检查传入的邮件,以便知道它是新的还是旧的)。 .. 但是:此命令还会从 SENT 框中返回邮件,这对许多人来说不是一个可行的解决方案。
提示:
如果您正在快速有效地管理收件箱,并且不认为 250 是您流程中的限制因素,那么 UIDL 和 RETR 将起作用。
如果您无法将收件箱保持在 250 以下,但还需要访问新电子邮件,并且您不希望收件箱增长到惊人的大小并且性能不受影响,那么最近模式应该可以工作。