【问题标题】:Message numbers with Javamail API带有 Javamail API 的消息号
【发布时间】:2013-01-07 12:10:28
【问题描述】:

我想知道 JavaMail API 中的消息编号是如何工作的。 它们总是按时间排序吗?

我想要做的是避免重新获取 gmail 文件夹上的标题。 假设我有一个包含 20,000 条消息的文件夹,我今天要处理它。 明天有 100 条新消息,我宁愿不获取所有消息 又是 20,000 个标题。我可以问一下 msg nums 吗? 20,001 - 20,100? 我认为这在添加稍后消息的正常情况下会起作用 到文件夹。但是如果用户手动插入一些东西呢? 使用 Thunderbird 等客户端从较早的时间段导入文件夹?

[s]

【问题讨论】:

    标签: email imap jakarta-mail


    【解决方案1】:

    控制消息编号如何工作的是服务器。基本上在所有情况下,邮件编号都与邮件添加到邮箱的顺序相对应。

    例如,在您的收件箱中,这是接收邮件的顺序。您的电子邮件客户端可能会按照发送顺序显示消息,这可能完全不同。

    消息可能会从列表中删除,但消息永远不会插入到现有消息之前。如果您要查找新消息,则必须处理现有消息被删除、更改消息编号的情况。

    查看 JavaMail UIDFolder 接口,以及它所基于的 IMAP 规范。如果您跟踪您看到的最后一个 UID,则只需查看 UID 大于该 UID 的消息。还有更多细节,但这只是一个开始。阅读文档,如果您有任何问题,请告诉我。

    【讨论】:

    • 谢谢,比尔。这样可行。此外,我发现文件夹的消息编号也会增加(即,即使将具有较早时间戳的消息添加到 Gmail 文件夹,它也会稍后出现在 folder.getMessages() 中)。但我会改用 UID。
    • 如果您有 10 条消息并添加另一条消息,它将是 #11。如果您随后删除前 5 条消息并添加 5 条新消息,则消息 #11 完全是另一条消息。这就是您需要使用 UID 的原因。
    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 2016-10-26
    • 2011-02-17
    • 1970-01-01
    • 2012-01-10
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多