2013-07-25 24 views
8

. Bu yüzden sorum bu javax.mail.Session hakkındadır, bu durumda bu durumda her saniye yeniden oluşturulur (uyku zamanına ve checkInbox() çalışma süresine bağlı olarak).Java Posta: bağlanmak ve bir IMAP Klasör işlemleri gerçekleştirmek için kullanılan kod Aşağıda Oturum

Bunun iyi bir çözüm olmadığından eminim, özellikle IMAP'de oylama çok aptalca ama IMAP listener'u çalıştıramadım.

her çalışma daha iyi bir çözüm olabilir değil Oturumu yeniden canlandırmak ancak session is closed ya ben bilerek kapatabilir zaman nasıl anlarım? Ama Session.close() gibi bir şey yok mu veya NULL'dan Session mı? Ya da Oturum bazı tanımlı zaman aşımı ...

Kaynak var: Ben javax.mail için iyi örnekler ve belgeler (bulmak gerçekten zor söylemek zorunda içinde

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

Tüm API ve FAQ) yanında

cevap

10

Olduğu Dönem sadece yapılandırma bilgilerini yönetir; onu kapatmaya gerek yok. Yapılandırmanız değişmediği sürece, Oturum başından bir kez oluşturabilir ve jsut kullanmaya devam edebilirsiniz.

Bağlantılar, diğer taraftan, pahalıdır ve uygulama tarafından dikkatle yönetilmesi gerekir. Mağaza ve her açık Klasör için bir bağlantı kullanılır. Bir bağlantı, herhangi bir zamanda, sunucu tarafından veya bir ağ hatası nedeniyle kapatılabilir. Bir bağlantı aktif olarak kullanılmıyorsa, kapatmalısınız.

Eğer JavaMail spesifikasyonları ile JavaMail project page üzerinde örnek uygulamalar buldunuz mu? Basit sorunların çoğuna yardımcı olurlar, ancak bağlantı yönetimi daha gelişmiş bir konudur.

Oh, ve başvurunuzun daha basit hale remove all that socket factory stuff ve.

+0

Çok teşekkür ederim. Yukarıdaki kaynaktaki düzenlemelere bakın. Umarım şimdi daha iyidir ve Oturum ve bağlantı, gerektiği gibi ele alınır. Biraz zamanım olduğunda yoklamadan kurtulmak için bir IMAP dinleyicisi oluşturmalıyım. Bunun için iyi ve güncel örnekler veya rehberler bulabileceğim herhangi bir fikrin var mı? – Kuchi

+0

Sanırım /javamail-samples/monitorint.java'da aradığım şeyi buldum. Son defa gittiğimde yeterince dikkat etmedim gibi görünüyor. – Kuchi

+0

Evet, bu başlamanızı sağlamalı. –