我想我錯過了關於如何在JavaMail中進行搜索的內容。從文件夾 在JavaMail中搜索 - 如何使它發生服務器端?
- 下載空消息創建你的結果
- 過濾器(yourFolder.search)使用搜索詞的結果相匹配的新搜索關鍵詞。
This works。但是 - 爲什麼這樣呢?如果我使用javamail連接到gmail之類的東西,那麼搜索並沒有在服務器端執行,而且似乎沒有任何優勢來使用整個javax.mail.search.SearchTerm結構。效率或減少需要通過網絡發送的數據量...
我沒有看到任何在服務器端執行搜索並返回匹配列表的方式。有任何想法嗎?
編輯:包括我現在正在做的,它不會執行任何搜索服務器端的僞代碼。即使我將其轉換爲使用SearchTerm它仍然不會做任何服務器端,對吧?
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "gimaps");
final Session session = Session.getDefaultInstance(props, null);
final GmailSSLStore store = (GmailSSLStore) session.getStore("gimaps");
store.connect(ADDRESS, PASSWORD);
final GmailFolder allMailFolder = (GmailFolder) store.getFolder("[Gmail]/All Mail");
allMailFolder.open(Folder.READ_ONLY);
final Message[] allMessages = allMailFolder.getMessages();
System.out.println("Messages:" + allMessages.length);
FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
allMailFolder.fetch(allMessages, fp);
for (final Message message : allMessages) {
final Address[] addrs = message.getFrom();
if (addrs != null) {
for (final Address addr : addrs) {
if (addr.toString().toLowerCase().contains("george")) {
System.out.println(addr.toString());
}
}
}
}