2012-07-06 13 views
5

Sto cercando una libreria Java che mi aiuti a usare IMAP e preferibilmente IDLE.Libreria per IMAP IDLE

Ho bisogno di scrivere un'applicazione Java che viene notificata e recupera nuova posta elettronica utilizzando SSL. L'applicazione controllerà la posta in arrivo di un account ospitato da hMailServer.

Finora ho guardato:

Apache Commons Imap ma non sembra per implementare IDLE.

JavaPushMail ma non è sufficientemente documentato (potrei riuscire a risolverlo ma non sono sicuro che i miei successori saranno altrettanto contenti).

Javamail, la loro IMAPFolder sembra una buona scelta, ma sono a corto di tempo e scrivere una libreria stabile ci vorrà del tempo.

Chilkatsoft è una libreria $ 199, è un po 'caro (lo so, il codice affidabile e buono è sempre facile da trovare :) Inoltre, non sono sicuro che gestisce IDLE.

Potrei provare una soluzione che esegue il polling della posta in arrivo se è documentata e stabile.

Gradirei codice di esempio, una libreria o una spinta nella giusta direzione.

Scusate per tutto il "Io" e grazie in anticipo.

risposta

2

Sono andato avanti e ho utilizzato Javamail. Pensa che è strano che nessun wrapper/client decente sia stato ancora scritto per questo. Bene, non posso avere tutto. Grazie per la risposta, Conor Sherman.

2

Non ho lavorato con nessuna delle librerie citate tranne Javamail, ma posso garantire per questo. Ho dovuto scrivere un'applicazione che esegue il polling di un server di Exchange e analizza tutta la nuova posta in una casella di posta. Ecco uno snippit del codice utilizzato in quel progetto. Ho fatto tutto il polling in-app, quindi non stavo controllando le notifiche push dal server o altro. So che questo non è esattamente quello che stavi chiedendo, ma spero che sia un passo nella giusta direzione.

import java.util.Properties; 
import javax.mail.* 
import javax.mail.search.FlagTerm; 


public class Driver { 
    public static void main(String[] args){ 
     // Create properties (disable security checks on server) 
     Properties props = new Properties(); 
     props.put("mail.imaps.ssl.checkserveridentity", "false"); 
     props.put("mail.imaps.ssl.trust", "*"); 

     // Get session 
     Session session = Session.getDefaultInstance(props, null); 

     try{ 
      // Get the store 
      Store store = session.getStore("imaps"); 
      store.connect("servername", "username", "password"); 

      //connection configuration 
      Folder folder = store.getFolder("INBOX"); 
      folder.open(Folder.READ_WRITE); 

      //get all unread messages in the inbox 
      FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false); 
      Message[] messages = folder.search(ft); 

      for (int i = messages.length -1; i>=0; i--) { 
       messages[i].setFlag(Flags.Flag.SEEN, true); 
      } 
      // Close connection 
      folder.close(false); 
      store.close(); 
     } 
     catch(Exception e){ 
     } 
    } 
} 
-1

Non ho usato io stesso, ma questa biblioteca sembra buono:

https://github.com/MailCore/mailcore2

MailCore 2 forniscono un'API semplice e asincrona per lavorare con protocolli di posta elettronica IMAP, POP e SMTP. L'API è stata riprogettata da zero.

+0

È utilizzabile da Java ora? – arnt

+0

@arnt ci sono documenti API Java. Sembra che sia possibile chiamare il codice C++ tramite java. Immagino sia utilizzabile da java. Ma non è puro java. Immagino tu abbia bisogno di compilare il core per ogni piattaforma. – guettli