Foros del Web » Programación para mayores de 30 ;) » Java »

Cómo marcar un correo como leido desde java

Estas en el tema de Cómo marcar un correo como leido desde java en el foro de Java en Foros del Web. Que tal Señores: Problemas con marcar como correos leídos en gmail desde java. Consiste en leer un correo y hacer un fw. Yo tengo ya ...
  #1 (permalink)  
Antiguo 20/10/2011, 10:57
 
Fecha de Ingreso: agosto-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Cómo marcar un correo como leido desde java

Que tal Señores:

Problemas con marcar como correos leídos en gmail desde java.

Consiste en leer un correo y hacer un fw.

Yo tengo ya la aplicación de leer correos y hacer reenvios con java, pero el programa lee los mensajes pero no los marca como leídos.

Esto lo quiero hacer en caso de que se caiga la aplicación saber que correo no pude reenviar.

Saludos.

P.D: Utilizo javamail.
Si necesitan que lo explique más detallado lo hare.
  #2 (permalink)  
Antiguo 21/10/2011, 04:55
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Cómo marcar un correo como leido desde java

Yo intentaría probar con esto.

Crear un objeto con el mail como atributo y un boolean (otro atributo a mayores) que indica si está leido o no. Default false.

Cuando lee el conjunto de correos va marcando los leidos cambiandole el estado al boolean.

Luego sólo hay que separar los que mantengan el boolean a false. El problema es que se pierda ese estado al acceder nuevamente al correo, así que deberías implementar alguna forma de persistir el contenido.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 24/10/2011, 08:37
 
Fecha de Ingreso: agosto-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Cómo marcar un correo como leido desde java

Bien intentare eso.
He estado leyendo en otro post, que seria bueno que copiara primero el correo en otra carpeta y luego borrarlo, asi mi bandeja de entrada estaria digamos que limpia y con eso me daria cuenta de que correos no se enviaron.

Vere que me resulta y lo posteare.
  #4 (permalink)  
Antiguo 24/10/2011, 10:14
 
Fecha de Ingreso: agosto-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Cómo marcar un correo como leido desde java

He utilizado ya esto pero nada que funciona...

Flags banderasSoportadas = folder.getPermanentFlags();
messages[numberMail-i].setFlag(Flags.Flag.RECENT,true);

ANSWERED
DELETE
DRAFT
FLAGGED
RECENT
SEEN
USER

con cada una de esas opciones y ninguna me soluciona ... el único que hizo algo fue delete que lo puso en papelera, si encontrara una forma de pasarla a otra carpeta o que solo lo ponga como leído seria de gran ayuda.

Saludos.
  #5 (permalink)  
Antiguo 24/10/2011, 10:33
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: Cómo marcar un correo como leido desde java

Estás usando javamail? revisa esto:

// Get current flags set on a message
Flags msgFlags = msg.getFlags();

// Get all supported flags by this folder
Flags allowedFlags = fldr.getPermanentFlags();

// Check if a Flags object contains a flag
allowedFlags.contains(flagToCheck);

// Add a flag to a set of flags using a Flags.Flag object
msgFlags.add(flagToAdd);

// Set the flags on a message
msg.setFlags(msgFlags, isToBeSet);
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #6 (permalink)  
Antiguo 31/10/2011, 11:50
 
Fecha de Ingreso: agosto-2011
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Cómo marcar un correo como leido desde java

Bueno gracias por todo, la verdad intente utilizar eso lo que me dijiste pero no me dio resultado, al final borrare los mensajes que el javamail lea, suponiendo que los que no lea los mantenga en la bandeja de entrada.

Saludos.
  #7 (permalink)  
Antiguo 03/06/2014, 13:51
 
Fecha de Ingreso: junio-2014
Mensajes: 1
Antigüedad: 9 años, 10 meses
Puntos: 0
Respuesta: Cómo marcar un correo como leido desde java

tal vez a ti ya no te funcione, pero, para los que lleguen aquí por la misma razón:
PD: Necesitan la libreria de javaMail

public static void main(String args[]) {
Properties props = System.getProperties();

props.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "[email protected]", "PASSWORD");
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);// PODEMOS LEER Y ESCRIBIR
FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.RECENT), false);
Message messages[] = inbox.search(ft);

for (Message message : messages) {
String subject = message.getSubject();
String content = message.getContentType();
String emisorMensaje = message.getFrom()[0].toString();
String hj = message.getDescription();
String fecha = message.getSentDate().toString();
int NoMensaje = message.getMessageNumber();

System.out.println("\n\n\n\n");
System.out.println("subject" + subject);
System.out.println("DE: " + emisorMensaje);

System.out.println(hj);
System.out.println("FECHA :" + fecha);
System.out.println("MENSAJE NUMERO :" + NoMensaje);

message.setFlag(Flags.Flag.SEEN, true);//SEEN MARCA COMO VISTO LOS MENSAJES NO LEIDOS,FLAGGED LES PONE UNA ESTRELLITA

try {
} catch (Exception e) {
e.printStackTrace();
}
Flags flags = message.getFlags();
Address[] form = message.getFrom();
}
} catch (NoSuchProviderException e) {
e.printStackTrace();
System.exit(1);
} catch (MessagingException e) {
e.printStackTrace();
System.exit(2);
}
}

Etiquetas: correo, leido, marcar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:06.