Java Mail: Session

Ci-dessous le code utilisé pour se connecter et effectuer des opérations sur un Dossier IMAP.
Donc ma question est au sujet de la javax.mail.Session qui dans ce cas serait de recréer à chaque seconde (en fonction du temps de sommeil et le temps d'exécution du checkInbox()).

Je suis sûr que ce n'est pas une bonne solution, surtout l'interrogation sur l'IMAP est un peu stupide, mais je ne pouvais pas la IMAP listener en cours d'exécution.

De recréer la Session n'est pas tout, pourrait être une meilleure solution, mais comment savoir quand un session is closed ou puis-je fermer sur le but? Mais il n'y a rien comme Session.close() ou est la Session de NULL? Ou est-il un délai d'expiration d'une Session...

Source:

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);
}

Dans l'ensemble je dois dire que c'est vraiment dur de trouver de bons exemples et de la documentation pour javax.mail (en plus de l' API et la FAQ)

OriginalL'auteur Kuchi | 2013-07-25