Pregunta

Estoy trabajando en un proyecto de cliente de correo usando C #. Estoy usando tanto el POP e IMAP al protocolo de comunicación con el servidor. El problema es que no puedo entender por qué cuando quiero obtener el UID para un mensaje el resultado del servidor POP y el servidor IMAP son diferentes.

POP
C: UIDL 1
S: +OK 1 UID2-1269789826

y

IMAP
C: $ FETCH 1 (UID)
S: * 1 FETCH (UID 2)
S: $ OK Fetch completed.

¿Por qué el resultado para obtener el UID es tan diferente? En IMAP es otra función para esto? Cualquier ayuda es bienvenida. Gracias.

¿Fue útil?

Solución

POP3 e IMAP son dos protocolos distintos. Los UID utilizados por estos dos protocolos no están relacionados y no se supone que es el mismo en todos. De hecho, un POP3 UID es una cadena arbitraria mientras que un IMAP UID es un número de 32 bits (transmitida como cadena).

En teoría, es posible escribir un servidor de correo que soporta tanto IMAP y POP3 utilizan el mismo UID para ambos protocolos, pero no estoy al tanto de cualquier servidor que realmente hacer esto. En la práctica, hay que tratar a los UID POP3 e IMAP UID como valores no relacionados.

RFC 1939 (POP3): La única-id de un mensaje es una cadena de servidor-determinado arbitraria, que consiste de uno a 70 caracteres en el rango 0x21 a 0x7E, que identifica de forma única un mensaje dentro de un maildrop y que persiste entre sesiones.

RFC 3501 (IMAP): (Identificador Único (UID) Mensaje atributo es) un valor de 32 bits asignado a cada mensaje, que cuando se utiliza con el valor único de vigencia de identificador (ver más abajo) forma un valor de 64 bits que debe no se refieren a cualquier otro mensaje en el buzón o cualquier buzón posterior con el mismo nombre para siempre.

Otros consejos

Muy importante hecho de IMAP

Esto es lo que he aprendido a jugar con Gmail (espero que otros sistemas a ser lo mismo):

  • Se envía un mensaje a mi bandeja de entrada
  • Tiene UID 45
  • Mover el mensaje a la chatarra
  • Ahora tiene UID 5 (porque UID es único por buzón)
  • Mover de nuevo a la bandeja de entrada
  • Ahora tiene UID 46
  • Mover de nuevo a la chatarra
  • Ahora tiene UID 6
  • Obtener la idea ...

Me movió a los mensajes a través de la interfaz de usuario GMail.com

Por lo que yo puedo decir UID sólo es útil en la búsqueda de los últimos mensajes de correo electrónico en una carpeta. Puede ejecutar el comando de búsqueda ( "UID 34:*) para obtener todos los mensajes en una carpeta con el UID 34 o superior.

Pero no empezar a utilizar UID como una clave para ese mensaje en una base de datos o que va a terminar con incautos.

creo que voy a tomar el tiempo y el hash recibido con el contenido del mensaje para obtener un UID que realmente puede poner en una base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top