Estoy buscando un método para leer correos electrónicos usando Pop3 en C# 2.0. Actualmente, estoy usando el código encontrado en CodeProject. Sin embargo, esta solución es menos que ideal. El mayor problema es que no admite correos electrónicos escritos en Unicode.Lectura de correo electrónico usando Pop3 en C#
Respuesta
He utilizado con éxito OpenPop.NET para acceder a los correos electrónicos a través de POP3.
descargar el correo electrónico a través del protocolo POP3 es la parte fácil de la tarea. El protocolo es bastante simple y la única parte difícil podrían ser los métodos avanzados de autenticación si no desea enviar una contraseña de texto claro a través de la red (y no puede usar el canal de comunicación encriptado SSL). Vea RFC 1939: Post Office Protocol - Version 3 y RFC 1734: POP3 AUTHentication command para más detalles.
La parte más difícil viene cuando tienes que analizar el correo electrónico recibido, lo que significa analizar el formato MIME en la mayoría de los casos. Puede escribir rápidamente & analizador MIME sucio en unas pocas horas o días y manejará el 95 +% de todos los mensajes entrantes. La mejora de la analizador de manera que puede analizar casi cualquier medio de correo electrónico:
- obtener muestras de correo electrónico enviados desde los clientes de correo más populares y mejorar el programa de análisis con el fin de corregir los errores y malas interpretaciones RFC generados por ellos.
- Asegurarse de que los mensajes que violen RFC para las cabeceras del mensaje y el contenido no se colgará el analizador y que usted será capaz de leer todos los valores legible o adivinar desde el correo electrónico destrozado
- correcto manejo de las cuestiones de internacionalización (por ejemplo, las lenguas escritas de Rig a la izquierda, la codificación correcta para el idioma específico, etc.)
- UNICODE
- Adjuntos y el árbol jerárquico elemento de mensaje como se ve en "Mime torture email sample"
- S/MIME (firmado y correos electrónicos cifrados).
- y así sucesivamente
Depuración de un robusto programa de análisis MIME lleva meses de trabajo. Lo sé, porque estaba viendo a mi amigo escribir uno de esos analizadores para el componente mencionado a continuación y estaba escribiendo unas pruebas unitarias para él también ;-)
Volver a la pregunta original.
Siguiendo code taken from our POP3 Tutorial page y enlaces le ayudaría:
//
// create client, connect and log in
Pop3 client = new Pop3();
client.Connect("pop3.example.org");
client.Login("username", "password");
// get message list
Pop3MessageCollection list = client.GetMessageList();
if (list.Count == 0)
{
Console.WriteLine("There are no messages in the mailbox.");
}
else
{
// download the first message
MailMessage message = client.GetMailMessage(list[0].SequenceNumber);
...
}
client.Disconnect();
Básicamente estás diciendo "comprar mi componente", ¿verdad? No hay nada de malo en eso, suena como un buen componente. – MarkJ
Puede probar cualquier componente de terceros (gratuito o comercial). Mi post estaba tratando de señalar que la escritura de dicho componente es difícil y consume mucho tiempo debido a la necesidad de realizar pruebas exhaustivas, algo que difícilmente se puede hacer sin un gran número de informes de errores con datos de un gran número de usuarios reales. Sería bueno si elige el componente Rebex, pero si elige otro, no tengo ningún problema con él. Escribir mi propio analizador MIME o usar algún código de prueba de concepto encontrado en la web es en mi humilde opinión, en este caso no es la mejor manera de hacerlo. Pero puedo estar prejuiciado ;-), dibuja tu propia conclusión y prueba el código primero. –
¿Puedo usar Rebex componente para obtener mensajes de la bandeja de entrada de Exchange 2003? – Kiquenet
me llaman la moda antigua, pero ¿por qué utilizar una biblioteca tercera parte para un protocolo simple. Implementé lectores POP3 en aplicaciones ASP.NET basadas en web con System.Net.Sockets.TCPClient y System.Net.Security.SslStream para el cifrado y la autenticación. En cuanto a los protocolos, una vez que se abre la comunicación con el servidor POP3, solo hay un puñado de comandos con los que debe lidiar. Es un protocolo muy fácil de trabajar.
Mi aplicación de código abierto BugTracker.NET incluye un cliente POP3 que puede analizar MIME. Tanto el código POP3 como el código MIME pertenecen a otros autores, pero puede ver cómo encaja todo en mi aplicación.
Para el análisis MIME, uso http://anmar.eu.org/projects/sharpmimetools/.
Ver las POP3Main.cs de archivos, POP3Client.cs y insert_bug.aspx
También puede intentar Mail.dll mail component, que tiene soporte SSL, Unicode, y el apoyo multinacional de correo electrónico:
using(Pop3 pop3 = new Pop3())
{
pop3.Connect("mail.host.com"); // Connect to server and login
pop3.Login("user", "password");
foreach(string uid in pop3.GetAll())
{
IMail email = new MailBuilder()
.CreateFromEml(pop3.GetMessageByUID(uid));
Console.WriteLine(email.Subject);
}
pop3.Close(false);
}
Puede descargarlo aquí en https://www.limilabs.com/mail
Tenga en cuenta que este es un producto comercial que he creado.
¿Puedo usarlo para acceder a la bandeja de entrada de Exchange 2003? – Kiquenet
Sí, puedes. Solo tiene que habilitar los protocolos IMAP o POP3. –
No recomendaría OpenPOP. Acabo de pasar unas horas depurando un problema: POPClient.GetMessage() de OpenPOP estaba misteriosamente devolviendo nulo. Depuré esto y descubrí que era un error de índice de cadena: vea el parche que envié aquí: http://sourceforge.net/tracker/?func=detail&aid=2833334&group_id=92166&atid=599778. Fue difícil encontrar la causa, ya que hay bloques catch {} vacíos que tragan excepciones.
Además, el proyecto es en su mayoría en estado latente ... el último lanzamiento fue en 2004.
Por ahora todavía estamos utilizando OpenPOP, pero voy a echar un vistazo a algunos de los otros proyectos de personas han recomendado aquí.
HigLabo.Mail es fácil de usar. Aquí es un ejemplos de uso:
using (Pop3Client cl = new Pop3Client())
{
cl.UserName = "MyUserName";
cl.Password = "MyPassword";
cl.ServerName = "MyServer";
cl.AuthenticateMode = Pop3AuthenticateMode.Pop;
cl.Ssl = false;
cl.Authenticate();
///Get first mail of my mailbox
Pop3Message mg = cl.GetMessage(1);
String MyText = mg.BodyText;
///If the message have one attachment
Pop3Content ct = mg.Contents[0];
///you can save it to local disk
ct.DecodeData("your file path");
}
se puede obtener de https://github.com/higty/higlabo o Nuget [HigLabo]
Sólo traté SMTPop y funcionó.
- He descargado this.
- Añadido
smtpop.dll
referencia a mi proyecto C# .NET
escribió el siguiente código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SmtPop;
namespace SMT_POP3 {
class Program {
static void Main(string[] args) {
SmtPop.POP3Client pop = new SmtPop.POP3Client();
pop.Open("<hostURL>", 110, "<username>", "<password>");
// Get message list from POP server
SmtPop.POPMessageId[] messages = pop.GetMailList();
if (messages != null) {
// Walk attachment list
foreach(SmtPop.POPMessageId id in messages) {
SmtPop.POPReader reader= pop.GetMailReader(id);
SmtPop.MimeMessage msg = new SmtPop.MimeMessage();
// Read message
msg.Read(reader);
if (msg.AddressFrom != null) {
String from= msg.AddressFrom[0].Name;
Console.WriteLine("from: " + from);
}
if (msg.Subject != null) {
String subject = msg.Subject;
Console.WriteLine("subject: "+ subject);
}
if (msg.Body != null) {
String body = msg.Body;
Console.WriteLine("body: " + body);
}
if (msg.Attachments != null && false) {
// Do something with first attachment
SmtPop.MimeAttachment attach = msg.Attachments[0];
if (attach.Filename == "data") {
// Read data from attachment
Byte[] b = Convert.FromBase64String(attach.Body);
System.IO.MemoryStream mem = new System.IO.MemoryStream(b, false);
//BinaryFormatter f = new BinaryFormatter();
// DataClass data= (DataClass)f.Deserialize(mem);
mem.Close();
}
// Delete message
// pop.Dele(id.Id);
}
}
}
pop.Quit();
}
}
}
He intentado con el código de tipeo pero no hay un cuerpo de correo electrónico. ¿Todos los detalles vienen normalmente excepto el cuerpo? alguna idea ????? – AbuQauod
- 1. recuperar correo electrónico usando C#?
- 2. ¿Cómo puedo enviar/recibir (SMTP/POP3) correo electrónico usando R?
- 3. electrónico Obtención de un servidor POP3 usando PHP
- 4. Acceso intercambio de correo electrónico en C#
- 5. ¿Cómo puedo saber qué correo electrónico es una respuesta a otro correo electrónico, en C#?
- 6. Enviando correo electrónico en C#
- 7. Enviando correo electrónico usando email.mime.multipart en Python
- 8. de lectura de correo electrónico sin Perspectiva aplicación abierta
- 9. recibir correo electrónico usando matlab
- 10. Recibir correo electrónico usando PHP
- 11. enviar correo electrónico asp.net C#
- 12. Enviando correo electrónico usando GMail en android
- 13. C# Enviar correo electrónico masivo
- 14. leer el correo electrónico Usar el cliente Pop3 en la página web asp.net
- 15. envío de correo electrónico masivo usando PHP
- 16. Agregar un archivo adjunto a un correo electrónico usando C#
- 17. Enviar correo electrónico con attchement usando System.Net.Mail
- 18. "El correo electrónico no puede estar en blanco" Idear usando nombre de usuario o correo electrónico
- 19. horario Correo electrónico en asp.net, C#
- 20. cómo enviar correo usando C#?
- 21. Enviando correo electrónico HTML usando Python
- 22. Enviando un correo electrónico HTML usando Swift
- 23. Usando Android Intent.ACTION_SEND para enviar correo electrónico
- 24. Programado abrir un correo electrónico desde un POP3 y extraer un archivo adjunto
- 25. Cómo guardar adjuntos de correo electrónico en C#
- 26. verificar una dirección de correo electrónico existen en C#
- 27. Enviando correo electrónico en Android usando la API de JavaMail
- 28. Agregar Bcc al envío de correo electrónico usando .NET SmtpClient?
- 29. Integración de correo electrónico
- 30. Cómo recuperar solo correos electrónicos nuevos usando el protocolo POP3
enlace a Nuget: https://www.nuget.org/packages/OpenPop.NET/ – razon