Desea utilizar UniqueID (UID) para los mensajes. Esto es específicamente por lo que fue creado.
Deseará realizar un seguimiento del último UID solicitado y luego, para solicitar todos los mensajes nuevos, utilice el mensaje establecido "[UID]: *", donde [UID] es el valor UID real.
Por ejemplo, digamos que el último mensaje feteched tenía una identificación única de "123456". Usted se vendería
123456: *
A continuación, se descarta el primer mensaje devuelto.
Se supone que los UID son estables en todas las sesiones, nunca cambian y siempre aumentan su valor. El truco para verificar esto es verificar la UIDValidity cuando selecciona la carpeta. Si el número de UIDValidity no ha cambiado, los UIDs aún deberían ser válidos en todas las sesiones.
Estas son las partes pertinentes de la RFC:
2.3.1.1. Identificador único (UID) Mensaje Attribute
Un valor de 32 bits asignado a cada mensaje, que cuando se utiliza con el valor de vigencia de identificador único (ver más abajo) forma un valor de 64 bits que no debe hacer referencia a cualquier otro mensaje en el buzón o en cualquier buzón posterior con el mismo nombre para siempre. Los identificadores únicos se asignan de manera estrictamente ascendente en el buzón; como cada mensaje se agrega al buzón, se le asigna un UID más alto que el mensaje que se agregó anteriormente. A diferencia de los números de secuencia de mensaje , los identificadores únicos no son necesariamente contiguos.
El identificador único de un mensaje NO DEBE cambiar durante la sesión , y NO DEBE cambiar entre sesiones. Cualquier cambio de identificadores únicos entre sesiones DEBE ser detectable mediante el mecanismo de UIDVALIDITY que se describe a continuación.Se requieren identificadores únicos persistentes para que un cliente vuelva a sincronizar su estado de una sesión anterior con el servidor (por ejemplo, clientes de acceso desconectado o fuera de línea); esto se discute más a fondo en [IMAP-DISC].
Nota: El siguiente valor de identificador único está destinado a proporcionan un medio para un cliente para determinar si alguna de entrega del mensaje en el buzón desde el vez anterior que lo revisen este valor.
Aquí está el enlace con más información:
http://www.faqs.org/rfcs/rfc3501.html
Lo que yo haría, también un seguimiento de la INTERNALDATE de los mensajes descargados. De esta forma, si alguna vez pierde la sincronización UID, puede al menos repetir los mensajes y encontrar el último que descargó, en función del día interno del mensaje.
sí, esto es perfecto! asegúrese de ejecutar el comando "UID 123: *" en lugar de solo "123: *", que arroja resultados inesperados, por ej. client.Folders.Inbox.Search ("UID 123: *") –