在 Java 中更快地读取收件箱



我想获取收件箱中任何邮件中包含的每个人的列表。 现在,我可以使用javax邮件API通过IMAP进行连接并下载消息:

Folder folder = imapSslStore.getFolder("[Gmail]/All Mail");
folder.open(Folder.READ_ONLY);
Message[] messages = folder.getMessages();
for(int i = 0; i < messages.length; i++) {
  // This causes the message to be lazily loaded and is slow
  String[] from = messages[i].getFrom();
}

行消息[i].getFrom()比我想要的要慢,因为is会导致消息延迟加载。 我能做些什么来加快速度吗? 例如,我可以做某种批量加载而不是逐个加载消息吗? 这是否加载了整个消息,我是否可以只加载 to/from/cc 字段或标头? POP会比IMAP快吗?

您希望在 for 循环之前添加以下内容

FetchProfile fetchProfile = new FetchProfile();
fetchProfile.add(FetchProfile.Item.ENVELOPE);
folder.fetch(messages, fetchProfile);

这将预取所有邮件的"信封",其中包括发件人/收件人/主题/抄送字段。

您可以在文件夹中使用获取方法。根据Javadocs:

客户端使用此方法指示指定的项是 给定消息范围需要集体使用。实现是 期望在 高效的方式。请注意,此方法只是对 实现以预取所需项目。

对于从适当的获取配置文件是信封。当然,这仍然取决于实施,邮件服务器确实有帮助。

相关内容

  • 没有找到相关文章

最新更新