Javamail:在搜索邮件时可以使用FetchProfile而不是仅仅获取邮件吗?

时间:2010-08-23 19:01:26

标签: java imap javamail

根据http://java.sun.com/products/javamail/javadocs/javax/mail/FetchProfile.html

Message[] msgs = folder.getMessages();
FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
folder.fetch(msgs, fp);

但是,如果我想通过search()只获取读取消息,我没有办法指定FetchProfile(因为search()不接受这样的参数)。

Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_WRITE);    
FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
Message messages[] = inbox.search(ft); //how to specify a FetchProfile here ??

还有其他办法吗?

提前多多感谢。

1 个答案:

答案 0 :(得分:3)

我不相信你可以。

在这里,JavaMail镜像底层的IMAP命令 - 首先你找出你感兴趣的消息集,然后通过一个单独的命令获取这些消息的数据。没有办法强制IMAP服务器从SEARCH命令返回FetchProfile样式的数据,JavaMail只是符合IMAP对什么时候返回的限制。