mail java email imap javamail apache-commons

Cliente IMAP en Java: API JavaMail o Apache Commons Net?



javamail api 1.4 5 (3)

Tengo que implementar un cliente IMAP en Java.

¿Qué ventajas tiene utilizar la biblioteca Apache Commons Net? ¿Hace la implementación robusta y más flexible?

¿Cómo debo manejar los valores devueltos, siempre produce cadenas?

Por ejemplo:

public static void main(String[] args) throws Exception { IMAPClient client = new IMAPClient(); client.connect(SERVER); client.login(USERNAME, PASSWORD); client.select("INBOX"); client.fetch("1", "body[header]"); }

y podemos dirigir la salida a cadena por

client.addProtocolCommandListener(new PrintCommandListener(System.out, true));

Pero, ¿cómo puedo obtener una lista de carpetas como instancias de carpeta en lugar de una salida de cadena pura?


¿Cómo puedo obtener una lista de carpetas como instancias de carpetas en lugar de una cadena de salida pura?

Parece que apache IMAPClient es un contenedor de bajo nivel alrededor del protocolo IMAP, por lo que no se proporciona nada más elegante que las cadenas. Para una API de nivel superior, podrías mirar en la biblioteca de JavaMail :

Session session = Session.getDefaultInstance(System.getProperties(),null); Store store = session.getStore("imaps"); store.connect(this.host, this.userName, this.password); // Get default folder Folder folder = store.getDefaultFolder(); // Get any folder by name Folder[] folderList = folder.list();


Cuento: depende de tus necesidades reales.

Si su cliente se enfoca principalmente en enviar y leer correo , la API de JavaMail es una API de alto nivel estándar de facto, y será mucho más simple redactar correo, agregar encabezados y / o anexos.

Por otro lado, si tiene la intención de ofrecer todas las posibilidades del protocolo IMAP , la biblioteca Apache Commons Net de nivel inferior permitirá operaciones más detalladas, a cambio de más código de placa de caldera para operaciones simples.

Solo para completar esta respuesta, no debe olvidar Apache Commons Email , que según la página de inicio del proyecto se basa en la API de Java Mail, que pretende simplificar . Está mucho más cerca de JavaMail que de Commons Net.

Sin saber más de lo que uno quiere hacer, es difícil dar una respuesta más precisa ...


Considere consultar Retrieve UnRead Emails from Gmail - JavaMail API + IMAP

Está codificado usando la API de JavaMail, pero en mi opinión tiene una interfaz mucho más simple que la biblioteca de Apache.

Si realmente desea utilizar la biblioteca de Apache commons, eche un vistazo a los javadocs y vea qué otros parámetros puede pasar a .select() .