我正在嘗試使用Java執行我的gmail搜索。用JavaMail我可以通過郵件搜索,像這樣做一則消息:我可以使用Java在郵件服務器上執行搜索嗎?
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "myUsername", "myPassword");
Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);
SearchTerm term = new SearchTerm() {
@Override
public boolean match(Message mess) {
try {
return mess.getContent().toString().toLowerCase().indexOf("boston") != -1;
} catch (IOException ex) {
Logger.getLogger(JavaMailTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (MessagingException ex) {
Logger.getLogger(JavaMailTest.class.getName()).log(Level.SEVERE, null, ex);
}
return false;
}
};
Message[] searchResults = inbox.search(term);
for(Message m:searchResults)
System.out.println("MATCHED: " + m.getFrom()[0]);
但這需要下載每個消息。當然,我可以緩存所有結果,但是這會成爲大型Gmail郵箱的存儲問題,並且速度也會非常慢(我只能想象通過千兆字節文本搜索需要多長時間...)。
所以我的問題是,有沒有辦法通過郵件在服務器上搜索la gmail的搜索字段?也許通過Microsoft Exchange?
Google的營業時間沒有任何變化。
感謝。我可以連接到服務器和IMAPFolder,但是當我發出doCommand(按照鏈接中的示例)時,response.isOK()爲false。我得到了一個異常的第一時間(我似乎無法重現),但現在它只是返回: A5 BAD未知命令:SORT 我的連接代碼: IMAPStore店=新IMAPStore(會話,新的URLName(「imap:// myusername:[email protected]/」)); store.connect(); IMAPFolder folder =(IMAPFolder)store.getFolder(「inbox」); 然後我做同樣的folder.doCommand()調用爲例。任何想法爲什麼這不起作用? 抱歉格式化。 – smurthas 2010-03-09 03:39:36
'不明命令:SORT'意味着服務器不支持'SORT'命令。當您發出CAPABILITY命令(應該是JavaMail發送的第一個東西)時,IMAP服務器會告訴您支持哪些功能,以便您可以檢查該響應以查看可用功能。 – Martin 2010-03-09 04:11:46