Obtener cantidad de email sin leer en GMail con Java

02/Feb/2013 Java , Deja un comentario

Hoy les traigo una forma fácil de obtener la cantidad de mails sin leer en nuestra casilla de Gmail con Java; en este caso, usaremos la librería JavaMail la cual es bastante conocida y se han hecho muchas publicaciones en Linea de Código y también usaremos el protocolo imaps.

Para empezar debemos establecer ciertos atributos que son necesarios para la conexión (usuario, password, servidor), los cuales los estableceremos mediante un constructor:

  1. public Gmail(String user, String pass) {
  2. this.user = user + "@gmail.com";
  3. this.pass = pass;
  4. this.host = "imap.gmail.com";
  5. }

Una vez identificados y establecidos estos elementos podemos proceder con la conexión al buzón de correo.

La conexión que realizamos es del tipo imaps. Es por ello que se asignamos dicho valor a la variable del protocolo:

  1. Properties props = System.getProperties();
  2. props.setProperty("mail.store.protocol", "imaps");

Ahora creamos una sesión mediante la clase Session y realizamos la conexión:

  1. Session session = Session.getDefaultInstance(props, null);
  2. Store store = session.getStore("imaps");
  3. store.connect(host, user, pass);

Es importante indicar que la carpeta de la que queremos la información es el inbox. Es por ello que utilizamos el método .getFolder() para indicar dicha carpeta.

  1. inbox = store.getFolder("Inbox");

El código de conexión es el siguiente:

  1. public boolean connect() {
  2. try {
  3. Properties props = System.getProperties();
  4. props.setProperty("mail.store.protocol", "imaps");
  5.  
  6. Session session = Session.getDefaultInstance(props, null);
  7. Store store = session.getStore("imaps");
  8. store.connect(host, user, pass);
  9.  
  10. inbox = store.getFolder("Inbox");
  11. // Obtenemos la casilla de entrada como carpeta a analizar
  12.  
  13. return true;
  14. } catch (Exception e) {
  15. e.printStackTrace();
  16. return false;
  17. }
  18. }

Ya estamos conectados a GMail, ahora lo único que nos falta es obtener la cantidad de correos sin leer.

Abrimos el INBOX mediante el metodo open. Lo abrimos de solo lectura Folder.READ_ONLY.

  1. inbox.open(Folder.READ_ONLY);

El método .getUnreadMessagesCount() nos dice el número de mensajes que tenemos sin leer.

  1. int count = inbox.getUnreadMessageCount();

Metemos toda la consulta de mensajes no leidos en un método para que quede más sencilla de leer:

  1. public int getUnreadMessageCount() {
  2. try {
  3. inbox.open(Folder.READ_ONLY);
  4. int count = inbox.getUnreadMessageCount();
  5. inbox.close(false);
  6. return count;
  7. } catch (Exception e) {
  8. System.out.println(e);
  9. return -1;
  10. // En caso de una excepción retornamos -1
  11. }
  12. }

Y para finalizar, les voy a mostrar cómo sería el flujo básico de ejecución de este programa para obtener cantidad de email sin leer en GMail con Java:

  1. public static void main(String[] args) {
  2. Gmail gmail = new Gmail("USER", "PASS");
  3. gmail.connect();
  4.  
  5. System.out.println("Unread: " + gmail.getUnreadMessageCount());
  6. }

Vídeos sobre Java Mail


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*