Sto cercando di eseguire una ricerca della mia gmail utilizzando Java. Con JavaMail posso fare un messaggio per ricerca messaggi in questo modo:Posso eseguire una ricerca sul server di posta in 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]);
Ma questo richiede il download di ogni messaggio. Naturalmente posso memorizzare tutti i risultati nella cache, ma questo diventa un problema di archiviazione con grandi caselle di Gmail e sarebbe anche molto lento (posso solo immaginare quanto tempo ci vorrebbe per cercare tra gigabyte di testo ...).
Quindi la mia domanda è, c'è un modo per cercare attraverso la posta sul server, un campo di ricerca di la gmail? Forse tramite Microsoft Exchange?
Hours of Googling non ha restituito nulla.
Grazie. Sono in grado di connettermi al server e alla cartella IMAP, ma quando emetto un comando doCommand (come nell'esempio nel collegamento), response.isOK() è falso. Ho ottenuto un'eccezione la prima volta (che io non riesco a ricreare), ma ora ritorna solo: A5 BAD Comando sconosciuto: SORT mio codice di connessione: negozio IMAPStore = new IMAPStore (sessione , nuovo URLName ("imap: // nomeutente: [email protected]/")); store.connect(); IMAPFolder folder = (IMAPFolder) store.getFolder ("inbox"); Quindi faccio la stessa chiamata a cartella.doCommand() come esempio. Qualche idea sul perché questo non funziona? scusa per la formattazione. – smurthas
'BAD Unknown command: SORT' significherebbe che il server non supporta il comando' SORT'. Il server IMAP ti dice quali funzionalità sono supportate quando esegui il comando 'CAPABILITY' (dovrebbe essere la prima cosa che invia JavaMail) in modo da poter esaminare quella risposta per vedere quali funzionalità sono disponibili. – Martin