Jakarta mail 在javamail中,有没有一种方法可以让服务器返回消息头?

Jakarta mail 在javamail中,有没有一种方法可以让服务器返回消息头?,jakarta-mail,Jakarta Mail,在我的应用程序中,需要扫描电子邮件帐户中的所有电子邮件,并使用带有电子邮件发送日期的特殊时间对其进行过滤。 但在javamail中,每个消息的发送日期一开始并没有缓存在客户机中,当您需要它时,必须将其从服务器中拉出来,这会花费太多的时间。 我已经试过了: msgs = folder.getMessages(beginLine, endLine); FetchProfile fp = new FetchProfile(); fp.add(FetchProfile.Item.ENVELOPE); f

在我的应用程序中,需要扫描电子邮件帐户中的所有电子邮件,并使用带有电子邮件发送日期的特殊时间对其进行过滤。 但在javamail中,每个消息的发送日期一开始并没有缓存在客户机中,当您需要它时,必须将其从服务器中拉出来,这会花费太多的时间。 我已经试过了:

msgs = folder.getMessages(beginLine, endLine);
FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
folder.fetch(msgs, fp);
但它只是简单地从服务器上一个接一个地拉出标题。 所以,我想知道,当我使用
folder.getMessages()
时,服务器是否可以返回发送日期/邮件头?谢谢


而且,我正在使用pop3和imap,imap稍微容易一点,但我不能只使用imap,因为我可以决定电子邮件帐户使用哪种协议。

Folder.fetch不会逐个提取标题;它发送一个IMAP命令,用于提取所有指定消息的头。如果这不是你所看到的,那么还有别的问题。你能提供问题的说明吗?与IMAP不同,POP3不发送命令来获取消息标题,我不能只使用IMAP,我的一些应用程序用户还没有打开IMAP。我不明白。您对IMAP或POP3有问题吗?使用POP3,可以使用POP3 TOP命令单独下载头文件,如果您仅访问头文件,JavaMail将执行此操作。如果您访问邮件内容,将下载整个邮件,包括标题。由于POP3无法一次获取多封邮件的信封信息,如果您使用Folder.fetch,它将简单地迭代所有邮件,并使用TOP命令获取和缓存邮件头。问题是,我需要登录用户帐户以过滤和下载电子邮件,此过程有时间限制,所以我必须尽快完成,但是POP3获取头文件的方式是瓶颈。无论如何,谢谢回复,我找到了另一种方法来解决我的问题。鉴于POP3协议,您可以做的事情是有限的。如果你已经找到了解决问题的方法,请把它贴在这里,这样其他人可以从中受益。