.net - configurar - ¿Integrando la funcionalidad del cliente POP3 en una aplicación C#?
imap gmail (15)
Tengo una aplicación web que requiere un componente basado en servidor para acceder periódicamente a los buzones de correo POP3 y recuperar correos electrónicos. El servicio luego necesita procesar los correos electrónicos que implicarán:
- Validar el correo electrónico con algunas reglas comerciales (¿contiene una referencia válida en el asunto, qué usuario envió el correo, etc.)?
- Analizando y guardando cualquier archivo adjunto en el disco
- Tome el cuerpo del correo electrónico y los detalles del archivo adjunto y cree un nuevo elemento en la base de datos
- O actualice un elemento existente donde la referencia coincide con la línea de asunto del correo electrónico entrante
¿Cuál es la mejor manera de abordar esto? Realmente no quiero tener que escribir un cliente POP3 desde cero, pero necesito poder personalizar el procesamiento de los correos electrónicos. Idealmente, podría conectar algún componente que haga el acceso y la recuperación para mí, devolviendo matrices de archivos adjuntos, texto del cuerpo, línea de asunto, etc. listo para mi procesamiento ...
[ACTUALIZACIÓN: Comentarios]
De acuerdo, de modo que he dedicado bastante tiempo a buscar bibliotecas (principalmente gratuitas) .NET POP3, así que pensé en proporcionar una breve reseña de algunas de las mencionadas a continuación y algunas otras:
- Pop3.net - gratis - funciona bien, es muy básico en términos de funcionalidad provista. Esto es básicamente solo los comandos POP3 y algo de codificación base64, pero es muy directo, probablemente sea una buena introducción.
- Pop3 Wizard - comercial / algún código fuente abierto - no pude conseguir esto para construir, faltan archivos DLL, no me molestaría con esto
- El correo C # - gratis para uso personal - funciona bien, viene con el analizador Mime y el cliente SMTP, sin embargo, los comentarios están en japonés (no es un gran problema) y no funcionó con SSL ''listo para usar'' - tuve que cambiar el constructor SslStream después de lo cual no funcionó
- OpenPOP - gratis - no se ha actualizado durante unos 5 años, por lo que su estado actual es .NET 1.0, no es compatible con SSL, pero eso no fue un problema para resolver - Acabo de reemplazar la transmisión existente con un SslStream y funcionó. Viene con el analizador Mime.
De las bibliotecas gratuitas, elegiría C # Mail o OpenPOP.
Miré algunas bibliotecas comerciales: Chillkat , Rebex , RemObjects , JMail.net . En función de las características, el precio y la impresión de la empresa, probablemente recurra a Rebex y, en el futuro, si cambian mis requisitos o tengo problemas de producción con C # Mail o OpenPOP.
En caso de que alguien lo necesite, este es el constructor SslStream de reemplazo que utilicé para habilitar SSL con C # Mail y OpenPOP:
SslStream stream = new SslStream(clientSocket.GetStream(), false,
delegate(object sender, X509Certificate cert,
X509Chain chain, SslPolicyErrors errors) { return true; });
El constructor de la clase SslStream fue modificado y subido. La versión recomendada no tiene ningún problema para usar.
DasBlog usa uno bueno (y gratuito): toma el paquete fuente. Lo he usado (pero no recuerdo quién lo escribió, y no estoy en mi computadora portátil, ¿piensas en Pavel LI?). No es perfecto, y no hace SSL, pero funciona de otra manera.
Hice una implementación de OpenPop para un proyecto recientemente, y estaba contento con ella. Hace lo que dice en la lata. (y es gratis)
Si no le importa pagar un componente, hemos tenido un gran éxito con chilkat en el pasado. Por un par de cientos de dólares, obtienes una biblioteca repleta de bondad.
C # Mail está disponible en Codeplex y es bastante fácil de usar.
Jmail.NET . No busques más. Tenga en cuenta que la versión gratuita no incluye POP3. Querrá tomar la versión estándar (o más). No te preocupes, no es caro.
Eche un vistazo a la integración de POP3 en mi aplicación de código abierto BugTracker.NET en http://ifdefined.com/bugtrackernet.html . Todo el código libre y abierto. La parte más difícil, el análisis de mímica, se realiza en BugTracker.NET por SharpMimeTools en http://anmar.eu.org/projects/sharpmimetools/
Los archivos importantes que muestran cómo estoy usando la lógica POP3 y MIME son POP3Client.cs e insert_bug.aspx.
Hice mi propio analizador Mime y lo agregué a CodePlex porque seguí corriendo excepciones no manejadas con los otros cuando se trataba de codificaciones extrañas y combinaciones extrañas de archivos adjuntos. La implementación del cliente pop3 es tosca, solo hecha para propósitos de prueba, pero maneja eso bien. La parte del analizador Mime rellena el objeto MailMessage estándar, de modo que puede reenviarlo fácilmente a él. Puedo expandir / mejorar a pedido, pero por ahora funciona bien para mis necesidades. Siéntete libre de echarle un vistazo.
Lumisoft es de código abierto e incluye un cliente POP (entre otras cosas). Ha existido por muchos años, muy estable.
Si necesita SSL para acceder a Gmail ... aquí hay algunas modificaciones a la biblioteca OpenPOP.net que le da soporte SSL.
OpenPop.net modificado para incluir soporte SSL para acceder a Gmail
Hay varias implementaciones de cliente POP3 en codeproject.com. No los he evaluado, pero tal vez puedas encontrar lo que necesitas allí. Si no, puedo decir que POP3 es un protocolo bastante simple. Incluso puede leer su cuadro POP3 con telnet si conoce de 4 a 5 comandos.
En realidad solo necesitas estos comandos y tal vez alguna decodificación base64 para los archivos adjuntos. Eso es.
Es posible que desee incluir el componente Mail.dll .NET en su clasificación. Tiene soporte SSL, Unicode y soporte de correo electrónico multinacional:
using(Pop3 pop3 = new Pop3())
{
pop3.Connect("mail.host.com"); // Connect to server
pop3.Login("user", "password"); // Login
foreach(string uid in pop3.GetAll())
{
IMail email = new MailBuilder()
.CreateFromEml(pop3.GetMessageByUID(uid));
Console.WriteLine(email.Subject);
}
pop3.Close(true);
}
El protocolo IMAP también es compatible.
Tenga en cuenta que este es un producto comercial que he creado.
Puede descargarlo aquí: http://www.lesnikowski.com/mail
Soy uno de los principales desarrolladores de OpenPop.NET . Me quedé sin esta reseña y tuve que hacer algunos comentarios sobre el estado actual de OpenPop.NET ya que la revisión parece obsoleta con el desarrollo.
OpenPop.NET vuelve al desarrollo activo. SSL se introdujo hace medio año. El proyecto tuvo una refactorización importante y ahora es mucho más estable y fácil de usar. Cuando asumí el proyecto tenía muchos errores, y hasta ahora no conozco ninguno. Se han implementado muchas características adicionales, principalmente en la parte del analizador MIME. El proyecto está respaldado por pruebas unitarias, y cada vez que se encuentra un error, se crea una prueba unitaria para mostrar este error antes de solucionarlo. Ahora existe un sitio web con ejemplos. También ha habido otras actualizaciones, pero no quiero mencionarlas todas.
Además, la licencia de OpenPop.NET ha cambiado de LGPL a Public Domain (también conocido como, sin restricciones). Esto creo que es una gran mejora para los usuarios comerciales.
Como tuve que automatizar algunas cosas de procesamiento de correo electrónico. Tomé OpenPop.net. Estaba buscando cómo puedo reenviar correos electrónicos con esta biblioteca y me encontré con esta increíble función: http://hpop.sourceforge.net/documentation/OpenPop~OpenPop.Mime.Message.ToMailMessage.html
para resumir, ¡he elegido OpenPop.Net y lo recomiendo!
mis mejores deseos, JP
Una nueva opción (a partir de 2014) es MailKit de Xamarin, disponible bajo la licencia de MIT. Analiza los mensajes del disco 25 veces más rápido que OpenPOP.NET. Incluye soporte de IMAP, POP3 y SMTP y parece ser muy rápido y robusto.