【问题标题】:GMail and POP3 RETR problem - switch to IMAP?GMail 和 POP3 RETR 问题 - 切换到 IMAP?
【发布时间】:2011-01-11 07:00:20
【问题描述】:

当我使用 POP3 协议访问 GMail 收件箱时,似乎在使用 RETR 命令获取给定电子邮件后,在 QUIT-ting 和重新连接后,调用 LIST 时不再列出以前 RETR-ieved 的电子邮件。

然后,在转到:GMail 设置//转发和 POP/IMAP 并设置“为所有邮件启用 POP(甚至是已经下载的邮件)”之后,下次登录时,所有电子邮件都会再次被列出,但如果我RETR其中任何一个,重新登录后它再次从LIST中消失..

然后我可以再次进入 GMail 设置并重复整个过程,但这对我来说是一个障碍,因为我正在编写一个无需任何手动操作即可运行的脚本。

是我遗漏了什么,还是只有 IMAP 可以提供帮助?

(编辑:RFC http://www.ietf.org/rfc/rfc1939.txt 没有提及 RETR 命令删除消息)

【问题讨论】:

    标签: language-agnostic email gmail imap pop3


    【解决方案1】:

    这是一个常见问题,不幸的是,它并不总是有最简单的解决方案。希望这些信息能帮助您和其他人找到适合您需求的最佳实施方案。免责声明:如果您可以选择或有能力将 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 以下,但还需要访问新电子邮件,并且您不希望收件箱增长到惊人的大小并且性能不受影响,那么最近模式应该可以工作。

    【讨论】:

      【解决方案2】:

      Gmail 的 POP3 配置有时可能令人困惑。你可以找到Gmail POP3 behavior here

      切换到 IMAP 是很好的解决方案。

      【讨论】:

        【解决方案3】:

        这是 Gmail 的预期行为。根据this question的说法,“[a]所有邮件可能一次下载到另一台计算机;下载邮件后,将不再下载。”

        还有一个'recent mode',在其中提取最近 30 天的邮件,无论它是否已经发送到另一个 POP 客户端。

        也就是说,不要像Gmail may block your account for 24 hours那样尝试在短时间内通过不同的计算机获取所有邮件。

        我强烈建议使用 IMAP。

        【讨论】:

        • 谢谢,很高兴知道。因此,POP3 似乎确实不适用于我的目的。幸运的是,我已经决定改用 IMAP,到目前为止,它就像一个魅力。无论如何,+1 以获得详细答案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-18
        • 2013-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-25
        相关资源
        最近更新 更多