Puis-je effectuer une recherche sur le serveur de messagerie en Java?
Je suis en train d'effectuer une recherche de mon gmail à l'aide de Java. Avec JavaMail je peux faire un message par la recherche de messages comme:
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]);
Mais cela nécessite le téléchargement de chaque message. Bien sûr, je peux mettre en cache tous les résultats, mais cela devient un stockage préoccupation avec de grandes boîtes gmail et aussi serait très lent (je peux seulement imaginer combien de temps il faudrait à la recherche par le biais de giga-octets de texte...).
Donc ma question est, est-il un moyen de recherche par le biais de mail sur le serveur, à la manière de gmail champ de recherche? Peut-être par le biais de Microsoft Exchange?
Heures de Googler a n'ont rien révélé.
OriginalL'auteur smurthas | 2010-03-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez laisser le serveur fera la recherche pour vous, avec la commande IMAP. La commande de RECHERCHE ne fera que vous obtenez jusqu'à présent, ce que vous avez probablement besoin est le genre de commande. Le TRI n'est pas implémenté dans JavaMail mais la la documentation montre comment vous pouvez mettre en œuvre vous-même:
http://java.sun.com/products/javamail/javadocs/com/sun/mail/imap/IMAPFolder.html#doCommand(com.sun.mail.imap.IMAPFolder.ProtocolCommand)
(Je ne pouvais pas comprendre comment faire un lien vers une URL avec des parenthèses)
BAD Unknown command: SORT
signifie que le serveur ne prend pas en charge laSORT
de commande. Le serveur IMAP vous indique quelles sont les fonctionnalités prises en charge lorsque vous émettez laCAPABILITY
de commande (ce qui devrait être la première chose JavaMail envoie) de sorte que vous pourriez examiner cette réponse pour voir quelles sont les fonctionnalités disponibles.OriginalL'auteur Martin
De se connecter à Exchange, IMAP de stocker et d'utiliser
javax.mail.search.SearchTerm
OriginalL'auteur jqa