Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/09/2011, 17:50
Karen30
 
Fecha de Ingreso: agosto-2010
Mensajes: 30
Antigüedad: 13 años, 8 meses
Puntos: 3
Pregunta Recibir correos JavaMail

Hola estoy obteniendo la bendeja de entrada de mis correos de varios dominios, el problema es que solo quiero obtener los correos no leídos, y obtiene todos.
Pueden ayudarme para que filtre solo los que no se han leído, gracias. Les dejo mi código :)

Primero hago mi conexion

Código:
public boolean connect() throws Exception {
        
    	try{
                logger.info("Making the connection POP3");
                String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
                correct=true;
                Properties pop3Props = new Properties();
                pop3Props.setProperty("mail.pop3.starttls.enable", "false");
                pop3Props.setProperty("mail.pop3.socketFactory.class", SSL_FACTORY);
                pop3Props.setProperty("mail.pop3.socketFactory.fallback", "false");
                pop3Props.setProperty("mail.pop3.port",  "995");
                pop3Props.setProperty("mail.pop3.socketFactory.port", "995");
        
                logger.info("Opening the count "+username);
                URLName url = new URLName("pop3",EmailServer, 995, "",
                        username, password);
                logger.info("Obteniendo la session de pop3");
                session = Session.getInstance(pop3Props, null);
                session.setDebug(true);
                
                logger.info("Obteniendo el store");
                store = new POP3SSLStore(session, url);
                logger.info("Conectando...");
                store.connect();
                logger.info("La conexion es exitosa");
                
                           
    	}catch(Exception e)
    	{
    		logger.error("the connection was not successful ");
                logger.info("La excepcion"+e);
                correct=false;
    	}return correct;
    }


Despues abro el folder, que en ese caso le mando INBOX

Código:
public void openFolder(String folderName) throws Exception {
        
        logger.info("Opening the Folder "+folderName);
        
        folder = store.getDefaultFolder();
        
        folder = folder.getFolder(folderName);
        
        if (folder == null) {
            logger.error("Invalid Folder");
            throw new Exception("Invalid folder");
            
        }
        
        // try to open read/write and if that fails try read-only
        try {
            logger.info("Trying to open read/write folder");
            folder.open(Folder.READ_WRITE);    
            
             } catch (MessagingException ex) {
                 logger.error("The connection read/write fails");
                 logger.info("Trying to open read-only folder");
                 folder.open(Folder.READ_ONLY);
            
        }
    }
En esta parte es cuando obtiene los mensajes, pero me los regresa todos, y solo ocupo los nuevos

Código:
 public void printAllMessages() throws Exception {
     
        // Attributes & Flags for all messages ..
        //Message[] msgs = folder.getMessages();
        Message[]msgs=folder.getMessages();
        // Use a suitable FetchProfile
        
        
        FetchProfile fp = new FetchProfile();
        fp.add(FetchProfile.Item.ENVELOPE);    
        folder.fetch(msgs, fp);
        
        
       
        for (int i = 0; i <msgs.length; i++) {
        	
        		MakeFile();
                        logger.info("--------------------------");
                        logger.info("MESSAGE #" + (i + 1) + ":");
        		//System.out.println("--------------------------");
        		//System.out.println("MESSAGE #" + (i + 1) + ":");
        		dumpPart(msgs[i]);            
        }            
    }

De hecho cuando hago un

return folder.getNewMessageCount();

me devuelve siempre cero, auque haya correo sin leer