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:
En esta parte es cuando obtiene los mensajes, pero me los regresa todos, y solo ocupo los nuevospublic 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); } }
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