imap - 在 Java 中更快地阅读收件箱

标签 imap pop3 gmail-imap jakarta-mail

我想获取曾经包含在我的收件箱中的任何邮件中的所有人的列表。现在我可以使用 javax mail 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();
}

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

最佳答案

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

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

这将预取所有邮件的“信封”,其中包括 from/to/subject/cc 字段。

关于imap - 在 Java 中更快地阅读收件箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10291705/

相关文章:

python - Python iMAP 电子邮件访问的格式正确的示例?

php - 如何获取 Gmail 未读邮件数

timeout - JavaMail store.connect() 超时 - 无法通过 Java 读取 gmail 收件箱

c++ - 一个简单的 C++ 邮件服务器

c# - Imap 西里尔字母邮件

gmail - 如何在Mutt中管理Gmail标签

php - 连接到 Gmail IMAP PHP "Couldn' t 打开流”

java - 响应消息 : javax. mail.MessageRemovedException : can't retrieve message #1 in POP3Message. getContentStream

c++ - 如何使用 libcurl 和 POP3 删除电子邮件?

php - PHP中使用IMAP()获取近期未读邮件数