Ir al contenido

Obtener cantidad de email sin leer en GMail con Java

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 método 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 leídos 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());
}

Descarga el código de Obtener cantidad de email sin leer en GMail con Java

Como obtener la cantidad de email sin leer en GMail con Java.

Descargar código