J'essaie d'effectuer une recherche de mon gmail en utilisant Java. Avec JavaMail je peux faire un message par recherche de message comme ceci:Puis-je effectuer une recherche sur le serveur de messagerie en 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]);
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 une préoccupation de stockage avec de grandes boîtes de Gmail et serait également très lent (je ne peux qu'imaginer combien de temps cela prendrait pour rechercher des gigaoctets de texte ...). Donc, ma question est, y a-t-il un moyen de faire une recherche par courrier sur le serveur, un champ de recherche de la gmail? Peut-être grâce à Microsoft Exchange?
Heures de googling n'a rien changé.
Merci. Je peux me connecter au serveur et à IMAPFolder, mais quand j'émets un doCommand (comme dans l'exemple dans le lien), response.isOK() est faux. Je suis une exception pour la première fois (que je ne peux pas sembler recréer), mais maintenant il retourne juste: A5 BAD Commande inconnue: SORT Mon code de connexion: IMAPStore store = new IMAPStore (séance , nouveau URLName ("imap: // myusername: [email protected]/")); store.connect(); Dossier IMAPFolder = (dossier IMAP) store.getFolder ("inbox"); Ensuite, je fais le même appel folder.doCommand() que l'exemple. Des idées sur pourquoi cela ne fonctionne pas? Désolé pour le formatage. – smurthas
'BAD Commande inconnue: SORT' signifierait que le serveur ne supporte pas la commande' SORT'. Le serveur IMAP vous indique quelles sont les fonctionnalités prises en charge lorsque vous exécutez la commande 'CAPABILITY' (devrait être la première chose que JavaMail envoie) afin que vous puissiez examiner cette réponse pour voir quelles fonctionnalités sont disponibles. – Martin