2010-06-08 30 views
6

He utilizado un código fuente abierto de CodeProject para leer el correo electrónico del servidor de correo entrante (servidor POP). El código se puede encontrar en la ubicación siguiente: http://www.codeproject.com/KB/IP/Pop3MimeClient.aspxLeer el correo electrónico del servidor de correo entrante (POP)

Hasta ahora funciona bien; Puedo leer correos electrónicos

Mi objetivo de usar este código era recuperar correos electrónicos de un servidor POP y procesarlos.

Mi problema es: Si utilizo el servidor pop de Gmail "pop.gmail.com" y ejecuto la aplicación, obtengo solo aquellos correos electrónicos que no he recuperado desde la última vez que ejecuté la aplicación. Pero si utilizo el servidor POP de mi cliente cada vez que ejecuto la aplicación, obtengo todos los correos electrónicos en el servidor pop.

Por ejemplo:
Si utilizo Gmail servidor POP: pop.gmail.com
tengo tres mensajes de correo electrónico en el servidor POP. No he ejecutado la aplicación. Estoy ejecutando la aplicación por primera vez. La aplicación lee el correo electrónico; esta vez recibiré los tres correos electrónicos. Ejecuto la aplicación por segunda vez; mi aplicación no leerá ningún correo electrónico esta vez porque ya leí los 3 existentes. Esto está bien; esto es lo que quiero.

Ahora enviar un correo electrónico a pop.gmail.com. Ejecuto la aplicación nuevamente por tercera vez; esta vez solo recibiré el correo electrónico que acaba de llegar, que es el cuarto. Este es un buen comportamiento; esto es lo que quiero.

Pero si uso del servidor POP de mi cliente:
No importa cuántas veces me ejecutar la aplicación, se lee todos los mensajes de correo electrónico en el buzón de correo electrónico.

Esto creará un problema para mí, porque yo estoy pensando en la construcción de un servicio de ventana que se va a leer mensajes de correo electrónico desde un servidor pop y procesarlos. Este servicio se ejecutará continuamente. Procesaré correos electrónicos en el servidor POP, luego dormiré, digamos 1 minuto, y procesaré nuevamente los correos electrónicos. Si la aplicación descargada de CodeProject lee todos los correos electrónicos todo el tiempo, el buzón de mis clientes puede tener miles de correos electrónicos en este buzón, por lo que esto no sería factible para mí.

¿Hay algunos ajustes que se van a realizar en el servidor POP de mi cliente que permitirá a mi solicitud para recuperar únicamente los mensajes de correo electrónico que no he leído desde la última vez que me encontré el servicio?

Respuesta

3

No utilice la implementación de Gmail POP o IMAP como canónica; ambos protocolos se comportan de manera diferente con las cuentas de Gmail que con prácticamente cualquier otro servidor.

Para responder a su pregunta, tiene dos enfoques que puede tomar:

  1. un seguimiento de los identificadores de mensaje de los mensajes que usted ha visto e ignorarlas en las conexiones posteriores (esto dejará los mensajes en el servidor para que otro cliente descargue).
  2. Emita el comando DELE después de descargar un mensaje, que lo eliminará del servidor.
+0

+1 muy buena respuesta. – adatapost

Cuestiones relacionadas