2011-05-03 89 views
4

有没有一种方法可以通过使用Javamail API对一个IMAP服务器进行一次调用来获取多封电子邮件的邮件正文?批量提取使用Javamail API和IMAP的邮件实体

我知道我可以使用Message.getContent()调用来获得给定消息的正文,但是这最终会对每个消息的imap服务器进行调用。

是否可以使用FetchProfile和Folder.fetch调用批量获取正文?该文档意味着FetchProfile仅用于标题数据。我尝试以下,但没有做的伎俩:

FetchProfile fp = new FetchProfile(); 
fp.add("rfc822.text"); 
inbox.fetch(messages, fp); 

如果这是不可能做到这一点使用JavaMail,是由于JavaMail的API在约束或不IMAP协议根本不支持这个?

+0

看到这个答案:http://stackoverflow.com/questions/2538481/javamail-performance – user1001630 2012-06-08 11:13:56

回答

2

JavaMail的局限性。 IMAP协议允许抓取了多个消息的机构一次:

a1 fetch 1:* (rfc822.header rfc822.text) 

本页面是一个很好的介绍,通过telnet探索IMAP协议: http://bobpeers.com/technical/telnet_imap

+0

Cocnerning此问题,如果我们将响应作为IMAPResponse对象获得,那么我怎么才能将正文内容作为MultiPart对象获取?我试图避免手动解析响应... – Justmaker 2012-02-29 14:31:21