java - POP3:从 POP3 服务器接收邮件的最佳方式

标签 java email jakarta-mail pop3

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

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

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

  • 通过Flag.deleted,我们从服务器中删除消息。因此,每次我们轮询服务器时,我们只会收到最新的消息。但是有些POP3服务器会保存邮件,那么我们从服务器上删除邮件会不会出错?

  • 我将邮件保存在数据库中。因此,我统计了所有收到的消息。这就是实现的内容。获取从数据库收到的邮件的计数(x)。获取来自 pop3 文件夹的最新邮件计数(y)。然后检索从 (y-x+1) 到 y 的邮件。这就是我们已经实现的。

  • 从文件夹中获取 header 列表。获取特定日期之后的 header 列表,并将其与过去几天的UUID 列表进行比较。从文件夹中获取剩余 UUID 的数据。我认为这是最好的。但会不会因此而产生性能问题呢?

  • 如有任何帮助,我们将不胜感激。谢谢!

    注意:我使用的是javamail!

    最佳答案

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

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

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

    关于java - POP3:从 POP3 服务器接收邮件的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28814549/

    相关文章:

    java - 使用Eclipse IDE可以完美编译并运行Java程序,但是当我使用 'javac'时,会出现错误

    java - 大O时间复杂度

    android - 如何仅使用电子邮件应用程序发送带附件的电子邮件?

    c - 在C中读取邮件假脱机

    php - 在 zend 框架中发送电子邮件,在 css 中嵌入图像

    java - WSO2 ESB - 发送电子邮件

    java - 如何一步步连接Gremlin到Neo4j数据库?

    java - 线性布局不可见/重叠

    java - 错误 - trustAnchors 参数必须非空

    java - 从最新到最旧的 Java Mail API 检索电子邮件