【问题标题】:Does the POP3 protocol allow you to specify a subset of emails to download?POP3 协议是否允许您指定要下载的电子邮件子集?
【发布时间】:2009-03-27 21:56:07
【问题描述】:

我正在编写一个 POP3 邮件客户端。我想将消息留在服务器上,但我不想每次重新连接时都必须重新下载所有消息。

如果我今天下载所有消息,明天重新连接,该协议是否支持仅下载过去 24 小时内的消息或某个顺序 ID 的消息?还是我必须重新下载所有消息?

我知道唯一标识列表功能,但根据http://www.faqs.org/rfcs/rfc1939.html,原始规范不支持它。大多数邮件服务器是否支持此功能?

是的,我的客户端也支持 IMAP,但这个问题是专门针对 POP 服务器的。

【问题讨论】:

    标签: email pop3


    【解决方案1】:

    您是否考虑过使用 IMAP?

    【讨论】:

      【解决方案2】:

      我已经做到了。

      您必须重新阅读所有标题,但您可以决定要下载哪些邮件。

      但是,我不记得标题中的任何内容会为您提供万无一失的时间戳。如果不记录您已经看到的内容,我认为您的解决方案是不可能的。

      (就我而言,我不在乎——我只是在标题中寻找具有某些识别特征的消息——这些消息已被下载、处理和终止,其他所有内容都没有受到影响。)

      我还想知道您是否误解了协议。仅仅因为您下载了一条消息并不意味着它已从服务器中删除。如果您给出明确的命令来终止消息,它只会从服务器中删除。 (当一条消息包含如此多的附件以致在您正确注销之前系统超时并因此您的 kill 命令被丢弃时,您将被逼上墙!)(这是设计中的疏忽。原始逻辑是附加一个超过 100k 的文件,或尽可能多的文件,其总数低于 100k。另一个任务发出并生成数千个文件,每个文件大约 100 字节。虽然它是一个完全合法的文件,尽管极端,但电子邮件却无法杀死它!)

      因此,如果我正在编写一个邮件客户端,我会简单地下载我在本地没有的任何东西。如果它应该保留在服务器上,很好,只是不要发出 kill 命令。

      【讨论】:

        【解决方案3】:

        我过去看到的处理方式是逐个客户处理的。例如,如果我使用 Scribe 在一台机器上获取电子邮件而不删除,然后移动到另一台机器,尽管我以前见过它们,但所有电子邮件都会再次下载。在内部,我想客户端有一个表来存储以前是否下载过电子邮件。

        据我所知,协议中没有任何内容允许这样做。

        【讨论】:

          【解决方案4】:

          有点。您可以下载单个消息,但不能将状态存储在远程服务器上。

          请参阅http://www.faqs.org/rfcs/rfc1939.html 的 RETR 命令。

          【讨论】:

            猜你喜欢
            • 2020-10-24
            • 2012-03-30
            • 2011-08-23
            • 2023-03-17
            • 1970-01-01
            • 1970-01-01
            • 2012-10-19
            • 2021-04-29
            • 1970-01-01
            相关资源
            最近更新 更多