我正在使用Javamail API从Gmail IMAP服务器获取电子邮件。
我正在使用Message[] messages = inbox.search(term)
从服务器获取所有电子邮件。相反,我想逐个获取邮件,以便我可以逐个将它们保存在数据库中而不是获取整个数组,这样另一个服务就可以开始解析电子邮件而不是等待所有电子邮件来解析因为这是一个耗时的过程。
答案 0 :(得分:3)
搜索方法不从服务器获取所有消息的数据,它只从服务器获取匹配消息的消息号。在您调用Message对象上的方法以请求某些数据之前,返回的Message对象不包含任何数据。他们只是对服务器上消息的引用。
如果搜索呼叫太慢,则不是因为消息的数据正在返回给客户端,而是因为服务器搜索消息的速度很慢。您可以通过启用JavaMail debugging来确切了解客户端请求的内容以及服务器返回的内容。
如果您想预取更多的Message数据,而不是按需提取,可以使用Folder.fetch方法。