我想获得一个列表,其中列出了收件箱中任何邮件中包含的所有人。现在我可以使用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()比我想要的慢,因为导致消息被延迟加载。有什么办法可以加快速度吗?例如。有什么样的批量加载我可以做而不是一个一个地加载消息?这是否会加载整个消息,是否我只能加载to / from / cc字段或标题? POP会比IMAP更快吗?
答案 0 :(得分:6)
您想在for循环
之前添加以下内容FetchProfile fetchProfile = new FetchProfile();
fetchProfile.add(FetchProfile.Item.ENVELOPE);
folder.fetch(messages, fetchProfile);
这将预取所有消息的“信封”,其中包括from / to / subject / cc字段。
答案 1 :(得分:5)