Sotto il codice utilizzato per connettersi ed eseguire operazioni su una cartella IMAP. Quindi la mia domanda riguarda lo javax.mail.Session
che in questo caso ricreverebbe ogni secondo (a seconda del tempo di sonno e del runtime di checkInbox()).Java Mail: Session
Sono sicuro che questa non è una buona soluzione, specialmente il polling su IMAP è un po 'stupido, ma non sono riuscito a far funzionare il IMAP listener
.
Ricreare la sessione non tutte le corse potrebbero essere una soluzione migliore ma come faccio a sapere quando un session is closed
o posso chiuderlo di proposito? Ma non c'è niente come Session.close()
o la Sessione è NULL? O c'è qualche timeout definito su una sessione ...
Fonte:
final String port = "993";
Properties prop = new Properties();
// I assume there is some redundancy here but this didn't cause any problems so far
prop.setProperty("mail.imaps.starttls.enable", "true");
prop.setProperty("mail.imaps.port", port);
/** This part can be removed
* prop.setProperty("mail.imaps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
* prop.setProperty("mail.imaps.socketFactory.port", port);
* prop.setProperty("mail.imaps.socketFactory.fallback", "false");
*/
prop.setProperty("mail.imap.ssl.enable", "true");
prop.setProperty("mail.debug", "false");
// Create a session before you loop since the configuration doesn't change
Session session = Session.getInstance(prop);
// Nearly loop forever in Prod
while(true){
// Check the INBOX and do some other stuff
Store store = session.getStore("imaps");
store.connect(host, user, pw);
// ... the operations on the session ...
store.close();
// Sleep a bit try & catch removed
Thread.sleep(1000);
}
Tutto sommato devo dire che è davvero difficile trovare buoni esempi e la documentazione per javax.mail (oltre allo API e allo FAQ)
Grazie mille. Vedi le modifiche nella fonte sopra. Spero che ora vada meglio e che la Sessione e la connessione siano gestite nel modo giusto. Quando ho un po 'di tempo, dovrei creare un listener IMAP per sbarazzarmi del polling. Hai idea di dove posso trovare esempi o guide decenti e aggiornati per questo? – Kuchi
Credo che nel /javamail-samples/monitorint.java ho trovato quello che sto cercando. Sembra che non abbia prestato abbastanza attenzione quando l'ho passato l'ultima volta. – Kuchi
Sì, questo dovrebbe iniziare. –