• Martes 30 de Abril de 2024, 20:50

Autor Tema:  buscar correo con la API JavaMail  (Leído 1739 veces)

manuelroin

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
buscar correo con la API JavaMail
« en: Sábado 30 de Marzo de 2013, 16:58 »
0
Hola tengo funcionando este código utilizando la API JavaMail

Código: [Seleccionar]
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Clases;

import java.io.IOException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.search.SearchTerm;

/**
 *
 * @author CASA
 */
public class BuscarCorreos {

    String usuario;
    String contrasena;

    public BuscarCorreos(String usuario, String contrasena) {
        this.usuario = usuario;
        this.contrasena = contrasena;
        inicializar();
    }

    private void inicializar() {
        try {
            // Obtenemos las propiedades del sistema
            String popHost = "imap.gmail.com";
            Properties props = System.getProperties();
            // Obtener una sesión con las propiedades anteriormente definidas
            Session sesion = Session.getDefaultInstance(props, null);

            // Crear un Store indicando el protocolo de acceso y           
            // conectarse a él
            Store store = sesion.getStore("imaps");
            store.connect(popHost, usuario, contrasena);
            // Crear un Folder y abrir la carpeta INBOX en modo SOLO LECTURA
            Folder folder = store.getFolder("INBOX");
            folder.open(Folder.READ_ONLY);       

        SearchTerm term = new SearchTerm() {
            @Override
            public boolean match(Message mess) {
                try {
                    return mess.getContent().toString().toLowerCase().indexOf("prueba") != -1;               
                } catch (IOException ex) {
                    Logger.getLogger(BuscarCorreos.class.getName()).log(Level.SEVERE, null, ex);
                } catch (MessagingException ex) {
                    Logger.getLogger(BuscarCorreos.class.getName()).log(Level.SEVERE, null, ex);
                }
                return false;
            }
        };

        Message[] searchResults = folder.search(term);
        for (Message m : searchResults) {
            System.out.println("MATCHED: " + m.getFrom()[0]);
        }
        } catch (MessagingException me) {
            System.err.println(me.toString());
        }
    }
}

La búsqueda cuando la bandeja es pequeña no tiene problemas, pero cuando es una bandeja regular se pone lentísimo,
alguna idea de como realizar la búsqueda con el buscar de gmail? y luego solo traer los resultados

estuve viendo algunas clases dentro de la API como

GmailStore ; GmailFolder ; GmailRawSearchTerm , etc

Si alguien me puede dar una mano con esto se lo agradecería