2015-03-02 222 views
0

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

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

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

  • 随着Flag.deleted,我们从服务器删除的消息。所以每次我们调查服务器,我们都会收到最新的消息。但是有些POP3服务器会保存邮件,所以如果我们从服务器删除邮件,它会不会出错?

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

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

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

    注意:我正在使用javamail!

    回答

    1

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

    听起来好像你只是想使用POP3服务器作为“邮件放置”,从服务器提取所有消息并将它们保存到别处。如果您确定您的程序是唯一一个从POP3文件夹中删除邮件的程序,那么通常情况下,这种方式会非常有效。将消息复制出该文件夹,将其标记为已删除,然后关闭该文件夹。最大的难题是处理失败。您可能想要跟踪文件夹中邮件的UUID,直到您确定它们已从文件夹中删除,以便知道您已复制哪些邮件。如果您的程序或服务器在复制并删除所有消息之前发生故障,则可以从中断位置继续。

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

    +0

    是的。我不确定用户是否会使用任何其他客户端来阅读电子邮件。在一个客户端收到邮件后,是否删除邮件是唯一正确的方法?展望如何运作?我已经看到了UUID的数据库/文件(很久以前)。我无法打开并检查它有什么确切的数据。 – 2015-03-04 17:02:30

    +1

    如果用户正在使用另一个邮件客户端阅读邮件,则几乎肯定不会在阅读邮件时将其删除。我相信Outlook会将这些消息下载到台式机/笔记本电脑上,并从服务器上删除它们,这意味着其他邮件客户端无法读取它们。如果其他客户端可以读取和删除消息,则需要跟踪UUID以了解您所看到的消息,并希望其他客户端不会删除需要查看的消息。 – 2015-03-04 20:58:08