Tengo una aplicación que se usa para archivar correos electrónicos usando imap. También en esta aplicación hay muchas cuentas imap que necesitan ser archivadas.¿Cómo descargar solo nuevos correos electrónicos de imap?
En este momento, de vez en cuando, la aplicación se conecta a cuentas imap y descarga solo correos electrónicos nuevos. Mi problema es que cada vez que se conecta a una cuenta imap, verifica todos los correos electrónicos de todas las carpetas y solo descarga correos electrónicos que aún no se descargan (almaceno Message-ID para todos los correos electrónicos y descargo solo correos electrónicos que tienen un ID de mensaje que no está almacenado). Así que quiero saber si hay una alternativa para esto, ya que lleva algo de tiempo verificar todos los correos electrónicos (para 10-20K lleva de 2 a 5 minutos).
Uso JavaMail API para conectarme a las cuentas de imap.
No es una solución para mí porque los UID han cambiado con el tiempo, es por eso que uso Message-ID para rastrear correos descargados. – telebog
según entiendo el método getUID (Message message), puede obtener el MessageUID real para el mensaje dado del servidor. Entonces sería posible obtener el UID real del último mensaje que tienes y luego usar los métodos getUIDNext() y getMessagesByUID() para encontrar el último mensaje y descargar el rango dado. – Erik
Un mensaje UID cambiará cuando el mensaje se mueva de una carpeta (o "buzón", en terminología IMAP) a otra. ["Los identificadores únicos se asignan de manera estrictamente ascendente en el buzón, ya que cada mensaje se agrega al buzón se le asigna un UID más alto que el mensaje (s) que se agregaron previamente."] (Http: //tools.ietf .org/html/rfc3501 # section-2.3.1.1) telebog parece querer descargar cada mensaje exactamente una vez, independientemente de la carpeta en la que se encuentre. – dkarp