我正在尝试向Gmail发出简单的POP3命令,如下所示:
openssl s_client -connect pop.gmail.com:995
+OK Gpop ready for requests from XX.XX.XX.XX
USER my-email@gmail.com
+OK send PASS
PASS mypassword
+OK Welcome.
连接和身份验证一切正常。但是,当我发出STAT或LIST命令时,我会收到以下内容:
STAT
+OK 345 20351669
这说明我的收件箱中有345封邮件。实际上我有180,只有少数未读。这个号码不能引用我的所有电子邮件......我已经拥有这个帐户5年了,肯定有超过345的WAY。所以,我开始RETR一些消息。最新的一个(#345)是从2007年1月开始的,最老的一个(#1)是从2006年末开始的。在写这篇文章的过程中,我收到了一些新的电子邮件,但即使在重新连接并发布新的LIST命令之后,345号码不会改变。
我不是电子邮件/流行专家,但我真的很难过...在gmail设置中为“所有消息”启用了POP3。我甚至尝试用另一个Gmail帐户做同样的事情,我得到完全相同的结果;一个非常低的消息数和真正的旧消息。
有什么想法吗?
答案 0 :(得分:1)
GMail本身只会在要求时提供300-400条消息。为了获得其他参数,您需要提供RFC1939“邮局协议 - 版本3”,第5节“TRANSACTION状态”,LIST命令中指定的可选消息号参数。
答案 1 :(得分:1)
此列表是Inbox + Sent Emails文件夹中的电子邮件列表!我刚刚发现了!也许还包括其他文件夹。
答案 2 :(得分:0)
您可以尝试更改Gmail设置以关闭POP,然后将其重新打开以显示“仅限新消息”。我记得很久以前这对我很有用。
答案 3 :(得分:0)
我已经安装了同样的问题,你应该怎么做才能改变你在“设置”中的gmail帐户POP下载设置 - >“转发和POP / IMAP” - >“pop下载”。默认选项是“对于自M / dd / yyyy以来已到达的所有邮件启用POP”,您应将其更改为“为所有邮件启用POP(即使已经下载的邮件)”。 一切都好了。
答案 4 :(得分:0)
试
USER recent:my-email
而不是
USER my-email
似乎用户名上的“recent:”前缀重新获取最新消息:
答案 5 :(得分:0)
Gmail最近30天使用了""算法,这样,如果您从多个设备登录,每个设备都会看到所有消息,即使其他设备已经下载了它们。
答案 6 :(得分:0)
这是一个普遍的问题,不幸的是,它并不总是最简单的解决方案。希望这些信息将帮助您和其他人找到适合您需求的最佳实施方案。
Gmail具有自己的Pop3实现,也就是说,并非所有这些都与其他pop3提供程序有关 这是问题的生命周期以及一些可以帮助您解决问题的信息:
您可以在NORMAL模式或RECENT模式下连接到pop3服务器。这会将弹出服务器上的“会话”置于“事务状态”。 通过在连接时为用户名添加前缀“ recent:” +用户名来使用最新模式。最近模式将返回服务器上最近30天的电子邮件。注意*这将取代我将在下面介绍的UIDL命令。即如果尚未删除,最近模式将返回所有30天的电子邮件。由于它总是返回最近30天,因此,如果您有多个客户端,则它们在最新模式下都将收到相同的信息。
正常模式是默认模式。普通模式将遵守您选择使用的命令的限制。 UIDL将返回服务器上大约250封最旧的电子邮件。如果服务器上有500封电子邮件,并且您没有删除任何电子邮件,则UIDL会返回前250封电子邮件的ID和唯一标识符,无论如何,因此您可能不知道新的250封电子邮件。以下警告,GMAIL在Web控制台上有一个选项,您可以在其中配置弹出窗口,将其设置为“从现在开始启用弹出窗口”。通过选择并保存,该时刻的时间戳将由弹出服务器用来“刷新”最旧的时间。因此,UIDL从那时起将开始向您返回消息,直到您再次达到250标记(假设您尚未删除它们)。
请务必注意,在您发出QUIT命令之前,事务状态一直存在。发出该命令后,服务器进入“更新”状态,它将开始发布您请求的更新,例如DELETE命令,或者在下载完成后将其弹出。在成功发出QUIT之前,不会删除任何内容,并且服务器状态不会更改。
STAT命令将向您显示服务器上pop3堆栈中的电子邮件数量。
RETR命令将检索或下载电子邮件,但直到成功结束会话后,它才标记为已下载
如果开发人员维护服务器的状态并弹出电子邮件,则许多开发人员用来检索消息编号和唯一标识符的UIDL非常有用。 UIDL只会返回最旧的250 ish(我见过251-255)电子邮件。如果您一直在轮询新电子邮件,那么如果未删除电子邮件,这将很危险。也!如果您需要删除电子邮件,请确保在Web控制台中配置了“将邮件保留在我的收件箱中”的GMAIL设置,以便您可以将这些电子邮件用作备份。
LIST命令将在正常模式下解决您的问题,以获取250封以上的电子邮件,(请注意:您仍然需要在本地维护一个id文件来交叉检查传入的邮件,以了解它是新邮件还是旧邮件。)但是:此命令还会从SENT框中返回邮件,对于许多人来说,这不是可行的解决方案。
提示:
如果您正在快速有效地管理收件箱,并且不认为250是您的流程中的限制因素,则UIDL和RETR将起作用。
如果您无法将收件箱保持在250个以下,但还需要访问新电子邮件,并且您不希望收件箱增长到令人发指的大小,并且性能也没有关系,则应该使用“最近”模式。