【问题标题】:POP3: Best way the receive mail from POP3 serverPOP3:从 POP3 服务器接收邮件的最佳方式
【发布时间】:2015-03-02 16:21:06
【问题描述】:

从 POP3 服务器接收消息的最佳方式是什么?我们只需要构建 POP3 Receiver 客户端而不是服务器。所以我们不知道服务器的行为(例如:服务器删除消息时等)。

我知道以下选项,但我无法以适当的理由提出案例。请帮忙。

1.UUID。如果我们保存所有 UUID,这会对性能产生影响吗?

  1. 使用 Flag.deleted,我们从服务器中删除消息。所以每次我们轮询服务器时,我们只会得到最新的消息。但是有的POP3服务器会保存邮件,如果我们从服务器中删除邮件会不会出错?

  2. 我将邮件保存在数据库中。所以,我计算了所有收到的消息。这就是实施的。计算 从 db 收到的邮件数(x)。获取 pop3 文件夹中邮件的最新计数(y)。然后将邮件从 (y-x+1) 检索到 y。这就是我们已经实现的。

  3. 从文件夹中获取标题列表。获取特定日期之后的标头列表,并将其与最近几天的 UUID 列表 进行比较。从文件夹中获取剩余 UUID 的数据。我认为这是最好的。但是会不会因此而出现性能问题?

任何帮助将不胜感激。谢谢!

注意:我正在使用 javamail!

【问题讨论】:

    标签: java email jakarta-mail pop3


    【解决方案1】:

    POP3 服务器有很多“多样性”,因此您可能必须对不同的服务器使用不同的策略。

    听起来您只是想将 POP3 服务器用作“邮件投递”,从服务器中提取所有邮件并将它们保存在其他地方。如果您确定您的程序是唯一一个从 POP3 文件夹中删除邮件的程序,这通常工作得很好。将邮件复制出文件夹,将其标记为已删除,然后关闭文件夹。最大的并发症是处理失败。您可能希望跟踪文件夹中邮件的 UUID,直到您确定它们已从文件夹中删除,以便知道您已经复制了哪些邮件。如果您的程序或服务器在您复制和删除所有消息之前出现故障,您可以从上次中断的地方继续。

    如果其他程序正在从同一个 POP3 文件夹中读取邮件,这一切都会变得更加复杂。

    【讨论】:

    • 是的。我不确定用户是否会使用任何其他客户端来阅读电子邮件。在一个客户端上收到邮件后删除邮件是唯一正确的方法吗?展望如何运作?我已经看到了 UUID 的数据库/文件(很久以前)。我无法打开并检查它有哪些确切数据。
    • 如果用户正在使用另一个邮件客户端阅读邮件,您几乎肯定不想在阅读时删除它们。我相信 Outlook 会将邮件下载到台式机/笔记本电脑并从服务器中删除它们,这意味着其他邮件客户端无法读取它们。如果其他客户端可以读取和删除消息,您将需要跟踪 UUID 以了解您查看了哪些消息,并希望其他客户端不要删除您需要查看的消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多