这是一个常见问题,不幸的是,它并不总是有最简单的解决方案。希望这些信息能帮助您和其他人找到适合您需求的最佳实施方案。免责声明:如果您可以选择或有能力将 IMAP 添加到您的 pop3,它肯定会使事情更易于管理。
Gmail 有自己的 Pop3 实现,话虽如此,但并非所有这些都与其他 pop3 提供者有关。以下是问题的生命周期以及可以帮助您管理它的一些信息:
您可以在 NORMAL 模式或 RECENT 模式下连接到 pop3 服务器。这将弹出服务器上的“会话”置于“事务状态”。通过在连接上的用户名前加上“recent:”+用户名来使用最近模式。最近模式将返回服务器上最近 30 天的电子邮件。注意*这将取代我将在下面讨论的 UIDL 命令。即最近模式将返回所有 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 框中返回邮件,这对许多人来说不是一个可行的解决方案。
提示:
If you are managing the inbox quickly and effectively and do not believe 250 to be a limiting factor in your process, UIDL and RETR will work.
If you will not be able to keep your inbox below 250 but also need access to new email, AND you do not expect the inbox to grow to outrageous size and the performance is not concerning, RECENT mode should work.