Ich versuche, eine Suche in meiner Google Mail mit Java durchzuführen. Mit JavaMail kann ich eine Suche nach Nachrichten wie folgt durchführen:
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]);
Dazu muss jedoch jede einzelne Nachricht heruntergeladen werden. Natürlich kann ich alle Ergebnisse zwischenspeichern, aber das wird bei großen Google Mail-Postfächern zu einem Speicherproblem und wäre außerdem sehr langsam (ich kann mir nur vorstellen, wie lange es dauern würde, Gigabytes an Text zu durchsuchen...).
Meine Frage ist also, gibt es eine Möglichkeit, die Mails auf dem Server zu durchsuchen, ähnlich wie das Suchfeld von Google Mail? Vielleicht über Microsoft Exchange?
Stundenlanges Googeln hat nichts ergeben.