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