通过 POP3 获取邮件,但将它们保存在服务器上

Fetch mails via POP3, but keep them on the server

我想从服务器获取邮件,但我也想控制何时删除它们。

有办法吗?

我知道此设置在邮件客户端中很常见,但 POPv3 规范 and/or 服务器实现似乎不支持此选项。

(我用的是python,但是我用其他的languages/libraries没问题,Python的poplib看起来很简单)

POP3 设计为在成功获取邮件后从服务器下载并删除邮件。如果您不想这样,请改用 IMAP 协议。该协议支持允许您在闲暇时删除邮件,而不是在邮件同步到您的机器时删除。

大多数 POP3 客户端可能会自动删除成功检索到的邮件,但这是客户端本身的一个功能,而不是协议。 POPv3 在会话的事务阶段支持四种基本操作:

  1. 列出邮箱中的所有可用邮件。 (LIST)
  2. 正在检索特定消息(RETR
  3. 标记要删除的消息(DELE)
  4. 正在清除所有删除标志(RSET)

客户端使用 QUIT 命令结束会话后,所有仍标记为删除的消息将在更新阶段删除。但是请注意,RETR 命令(根据我对 RFC1939 的阅读 而不是 标记要删除的消息;这需要使用 DELE命令。

但是请注意,特定的 POP3 服务器 可能具有删除检索到的邮件的策略,无论客户端是否请求它们被删除。这样的服务器是否提供了超出协议范围的绕过操作。 (关于这一点的讨论在 RFC 的第 8 节中提到,但不是协议本身的一部分。)