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

时间:2015-03-02 16:21:07

标签: java email javamail pop3

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

我知道以下选项,但我无法以正当理由陈述案例。请帮忙。

1的的UUID 即可。如果我们保存所有UUID,是否会对此产生任何性能影响?

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

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

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

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

    注意:我使用的是javamail!

1 个答案:

答案 0 :(得分:1)

POP3服务器中存在很多“多样性”,因此您可能不得不对不同的服务器使用不同的策略。

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

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