【问题标题】:Javamail: how to fetch messages modified since a specific dateJavamail:如何获取自特定日期以来修改的消息
【发布时间】:2012-08-08 01:43:15
【问题描述】:

我正在编写一个从 IMAP 服务器同步电子邮件(仅限收件箱)的应用程序。为此,我正在使用 javamail,但我遇到了性能问题。当我想刷新我的电子邮件时,我会在收件箱中获取所有消息,这需要几分钟。 :( 因此,我只想获取自上次刷新电子邮件以来修改过的消息。我找到了如何获取自某个日期以来接收或发送的消息,但我想做的略有不同。可以更改非常旧的消息(未读到已读)的状态。在这种情况下,修改日期是最近的,但接收或发送日期是旧的。

有什么想法吗?

问候, 昆汀

【问题讨论】:

    标签: jakarta-mail


    【解决方案1】:

    您无法更改旧邮件的内容,但可以更改标志。您可以获取所有消息的所有标志并将它们与标志的缓存副本进行比较。 (有 IMAP 扩展可以帮助解决这个问题,但许多 IMAP 服务器不支持它们,JavaMail 也不支持它们。)

    使用 Folder.fetch 方法在一次操作中获取所有标志,然后遍历 Message 对象并比较标志。

    【讨论】:

    • 感谢这个想法。 MimeMessage::getMessageId 返回的 String 是否是一个 uniq 标识符,可用于匹配本地消息和获取的消息?
    • 意图是它是唯一的,但没有任何东西可以保证它是唯一的,因此您可能会看到没有消息 ID 的冲突或消息,尽管这种情况应该很少见。请注意,这是一个 Internet 邮件问题,而不是 JavaMail 特有的问题。
    • @Quentin 我知道这已经很晚了,但是如果您需要消息的唯一标识符,您可以使用文件夹名称 + 消息 uid + uid 有效性的组合(请参阅tools.ietf.org/html/rfc3501#section-2.3.1.1
    猜你喜欢
    • 2010-10-26
    • 2021-09-20
    • 2017-10-21
    • 2019-08-25
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多