Artículos
Java

Obtener cantidad de email sin leer en GMail con Java

02/Feb/2013

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:

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

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:

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

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

Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps"); 
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.

inbox = store.getFolder("Inbox");

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

public boolean connect() {
  try {
    Properties props = System.getProperties();
    props.setProperty("mail.store.protocol", "imaps"); 

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

    inbox = store.getFolder("Inbox"); 
    // Obtenemos la casilla de entrada como carpeta a analizar

    return true; 
  } catch (Exception e) {
    e.printStackTrace();
    return false; 
  }
}

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.

inbox.open(Folder.READ_ONLY);

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

int count = inbox.getUnreadMessageCount(); 

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

public int getUnreadMessageCount() {
  try {
    inbox.open(Folder.READ_ONLY); 
    int count = inbox.getUnreadMessageCount(); 
    inbox.close(false);
    return count;
  } catch (Exception e) {
    System.out.println(e);
    return -1;
    // En caso de una excepción retornamos -1
  }
}

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:

public static void main(String[] args) {
  Gmail gmail = new Gmail("USER", "PASS");
  gmail.connect();

  System.out.println("Unread: " + gmail.getUnreadMessageCount());
}

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Suscribir
Notificar de
guest
0 Comentarios
Opiniones integradas
Ver todos los comentarios