我正在尝试使用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