2009-07-21 18 views
6

Tenemos un proveedor que envía archivos CSV como archivos adjuntos de correo electrónico. Estos archivos CSV contienen estados que se importan a nuestra aplicación. Estoy tratando de automatizar el proceso de principio a fin, pero actualmente depende de que alguien abra un correo electrónico y guarde los archivos adjuntos en un servidor compartido, para que la aplicación pueda usar el archivo.Programado abrir un correo electrónico desde un POP3 y extraer un archivo adjunto

Ya que no puedo convencer al proveedor para cambiar su proceso, tales como ofrecer una ubicación FTP o un servicio Web, estoy atascado con el intento de automatizar el proceso existente.

¿Alguien sabe de una manera de abrir mediante programación un correo electrónico de una cuenta POP3 y extraer un archivo adjunto? La solución preferida residiría en un servidor de Windows 2003, se escribiría VB.NET y sería segura. La aplicación puede residir en el mismo servidor que el servidor POP3, por ejemplo, podemos configurar el servidor POP3 gratuito que viene con Windows Server y obtener el archivo de correo almacenado en el sistema de archivos.

Por cierto, que están dispuestos a pagar por una solución off-the-shelf, si es que existe.

Nota: Yo miro esta question pero los puntos de respuesta a una solución CodeProject que no se ocupa de los archivos adjuntos.

Respuesta

2

posible duplicación de Reading Email using Pop3 in C#

Al menos, hay una carga derramada de sugerencias ahí que usted puede encontrar útil

+0

Casi ... Estaba buscando una solución preempaquetada con seguridad incorporada y escrita en VB.NET. Si no recibo otra respuesta, le daré la aceptación de esta respuesta. – Josh

3

Trate Mail.dll email component, es muy asequible, soporta archivos adjuntos caracteres nacionales y es fácil de usar, también es compatible con SSL :

Using pop3 As New Pop3() 
    pop3.Connect("mail.server.com") 
    pop3.Login("user", "password")        

    Dim builder As New MailBuilder() 
    For Each uid As String In pop3.GetAll()   
     ' Receive email message' 
     Dim mail As IMail = builder.CreateFromEml(pop3.GetMessageByUID(uid)) 

     'Write out received message' 
     Console.WriteLine(mail.Subject) 

     'Here you can use mail.Attachmets collection' 
     For Each attachment As MimeData In mail.Attachments 
      Console.WriteLine(attachment.FileName) 
      attachment.Save("c:\" + attachment.FileName) 
      ' you can also use attachment.Data here' 
     Next attachment 

    Next 

    pop3.Close(true) 
End Using 

se puede descargar desde aquí: http://www.lesnikowski.com/mail.

+1

Parece una buena solución. – Josh

1

voy a tirar en una sugerencia tarde a una más generalizadas "mensajes POP3 descargar y extraer los archivos adjuntos" solución utilizando el software existente y programación mínima. Necesitaba hacer esto para un cliente que cambiaba a recibir faxes por correo electrónico y no estaba contento con guardar manualmente los archivos adjuntos en una ubicación en la que pudieran importarse a una aplicación.

Para descargar mensajes en sistemas * nix fetchmail parece ser la norma y es muy capaz, pero me escogieron mpop tanto para la simplicidad y la compatibilidad de Windows (pero es multiplataforma). Si mpop no hubiera hecho el truco para mí, probablemente habría terminado haciendo algo con el getmail basado en Python, que se creó cuando el desarrollo de fetchmail se estancó durante un tiempo (se reanudó desde entonces).

MPoP se controla bien a través de línea de comandos o un archivo de configuración, por lo que simplemente crea varios archivos de configuración y especificar a través de línea de comandos qué archivo para cargar. Lo estoy usando en el modo "Exchange pickup directory", lo que significa que simplemente descarga los mensajes y los suelta como archivos de texto (.eml) en un directorio específico.

Para la extracción de los archivos adjuntos del mensaje, UUDeview parece ser el estándar (estoy usando el Windows port of UUDeview) en casi cualquier sistema que desee con casi cualquier característica que pueda desear. Mi principal alternativa a esto fue una secuencia de comandos de Python mucho menos capaz que desarrollé para un cliente diferente en 2007, pero estoy contento de ir con un ejecutable precompilado sobre la instalación de Python o el empaquetado con cualquiera de las Python- opciones to-exe.

Finalmente está la configuración, junto con los dos archivos de configuración de mpop mencionados anteriormente (que podría eliminar utilizando opciones de línea de comandos), también tengo dos archivos .cmd de 2 líneas lanzados cada 10 minutos por tarea programada - La primera línea para iniciar mpop para descargar en un directorio de trabajo y la segunda línea para ejecutar UUDeview y extraer archivos adjuntos de tipos especificados (.pdf o .tif) y luego eliminar cada archivo desde el que extrajo los archivos adjuntos. La salida se envía a otro directorio desde el cual el personal puede adjuntar archivos directamente según sea necesario.

Esta no es, en general, la forma más elegante de alcanzar estos fines, pero fue rápida, simple, funcional y razonablemente robusta: en cada etapa, si algo falla, falla y no se pierden datos. Los únicos lugares donde se pueden perder datos son los mensajes de no adjunto que se envían a las direcciones de correo electrónico de fax dedicadas, e incluso esos se ubicarán en el directorio de procesamiento y se capturarán eventualmente.

Cuestiones relacionadas