2012-07-06 11 views
5

Estoy buscando una biblioteca Java que me ayude a usar IMAP y preferiblemente IDLE.Biblioteca para IMAP IDLE

Necesito escribir una aplicación Java a la que se le notifique y recupere un nuevo correo electrónico usando SSL. La aplicación verificará la bandeja de entrada de una cuenta alojada por hMailServer.

Hasta ahora he visto:

Apache Commons Imap pero no parece poner en práctica IDLE.

JavaPushMail pero no está lo suficientemente documentado (podría ser capaz de resolverlo, pero no estoy seguro de que mis sucesores estén tan contentos).

Javamail, su IMAPFolder parece ser una buena opción, pero tengo poco tiempo y escribir una biblioteca estable porque llevará tiempo.

Chilkatsoft es una biblioteca de $ 199, es un poco caro (lo sé, el código confiable y gratuito siempre es fácil de obtener :) Además, no estoy seguro de que maneje IDLE.

Podría buscar una solución que sondee la bandeja de entrada si está documentada y es estable.

Agradecería un ejemplo de código, una biblioteca o un empujón en la dirección correcta.

Perdón por todo el "yo" y gracias de antemano.

Respuesta

2

Me adelanté y utilicé Javamail. Solo pienso que es extraño que todavía no se haya escrito una envoltura/cliente decente. Bien, no puedo tenerlo todo. Gracias por la respuesta, Conor Sherman.

2

No he trabajado con ninguna de las bibliotecas que mencionas excepto Javamail, pero puedo responder por ellas. Tuve que escribir una aplicación que sondea un servidor de intercambio y analiza todos los correos nuevos en una bandeja de entrada. Aquí hay un snippit del código usado en ese proyecto. Hice todas las encuestas en la aplicación, por lo que no estaba buscando notificaciones push del servidor ni nada. Sé que esto no es precisamente lo que pediste, pero espero que sea un paso en la dirección correcta.

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

No he utilizado yo mismo, pero esta biblioteca se ve bien:

https://github.com/MailCore/mailcore2

MailCore 2 proporcionan una API simple y asíncrona para trabajar con protocolos de correo electrónico IMAP, POP y SMTP. La API ha sido rediseñada desde cero.

+0

¿Es utilizable desde java ahora? – arnt

+0

@arnt hay documentos de API de Java. Parece que es posible llamar al código de c + + a través de java. Supongo que es útil desde Java. Pero no es puro java. Supongo que necesitas compilar el núcleo para cada plataforma. – guettli