¿Cómo confirmar que el correo ha sido entregado o no?

A continuación está mi encoding, solo échale un vistazo

System.Net.Mail.MailMessage oMail = new System.Net.Mail.MailMessage(); System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(); oMail.From = new System.Net.Mail.MailAddress("one@gmail.com"); oMail.To.Add(TextBox1.Text.Trim()); oMail.Subject = "Subject*"; oMail.Body = "Body*"; oMail.IsBodyHtml = true; smtp.Host = "smtp.sendgrid.net"; System.Net.NetworkCredential cred = new System.Net.NetworkCredential("myusername", "mypassword"); smtp.UseDefaultCredentials = false; smtp.Credentials = cred; smtp.Send(oMail); 

Aquí debo verificar si ese correo ha sido entregado o no.

    No puedes. Dado que utiliza SMTP, en general, es imposible saber si la entrega fue exitosa o no. Lea la especificación SMTP. El correo se enruta mientras se entrega, así que:

    1. No hay garantía de que su mensaje se envíe tan pronto como llame a smtp.Send() .
    2. Dado que SMTP está enrutado , no puede estar seguro de que algún nodo de la ruta no fallará con la entrega al enlace ascendente.

    Puede establecer la propiedad DeliveryNotificationOptions de MailMessage en OnSuccess .

    Hay más información sobre esto aquí: http://msdn.microsoft.com/en-us/library/system.net.mail.deliverynotificationoptions.aspx

    y aquí: http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.deliverynotificationoptions.aspx

    Como se ha señalado en los comentarios, este método no es 100% confiable. Es solo una opción.

    Estas son algunas de las mejores prácticas para garantizar la capacidad de entrega del correo electrónico:

    • Configure una sola dirección de no respuesta como una bandeja de entrada real y luego vaya a la cuenta de correo electrónico usando pop3 y busque los mensajes de recuperación.
    • Verifique que la dirección de correo electrónico sea válida antes de enviarla utilizando algo parecido a esta biblioteca de validación de correo electrónico:

    http://www.kellermansoftware.com/p-37-net-email-validation.aspx

    En caso de que alguien tropiece. Aquí está mi experiencia en un viejo servidor Win 2003 con Exchange. Mi aplicación .Net usa SMTP para enviar correos electrónicos y usé una dirección de grupo como “De”, por lo que cualquier respuesta iría a todo el grupo. Esta es una operación de despacho y queríamos que cualquier miembro del grupo lo ayudara con cualquier respuesta. Esperábamos que los avisos de no entrega se enviaran al grupo. Eso no pasa. Incluso fui al seguimiento de mensajes y vi que Exchange dijo que envió la notificación al grupo, pero nunca lo obtuvieron. Luego entré en Propiedades del servidor virtual SMTP e ingresé la dirección de correo electrónico del grupo en “Enviar copia del informe de no entrega a:”. El mismo resultado, el seguimiento de mensajes dice que lo envió al grupo pero nunca se entregó. Aparentemente, los avisos de no entrega solo serán entregados a una dirección de correo electrónico de un individuo que no sea un grupo. Lo cambié a una dirección individual y funciona.

    Si no recibe ninguna excepción en su código o en su servidor SMTP, puede suponer que se ha entregado. Ese es un problema con el correo electrónico, no hay forma de garantizar la entrega.

    Si tiene acceso al servidor que contiene el registro SMTP, dependiendo del tipo de servidor utilizado y el nivel de detalle utilizado, es posible que pueda obtener una idea mucho mejor sobre el éxito real de la entrega.

    Por ejemplo, si está utilizando SmarterMail, podría escribir un analizador simple para leer el registro SMTP e informar a su aplicación. No es que esto no deba ser una operación de locking, ya que si su correo electrónico está en la lista gris, pueden transcurrir varios minutos antes de que se entregue.

    Otra opción es crear una dirección de correo electrónico catch all “noreply”, y enviar sus correos electrónicos con una identificación de correo electrónico incluida en el remitente, es decir, noreply-bounces-32432@bounces.midominio.com y usar un lector pop3 para comprobar que la bandeja de entrada haya sido devuelta correos electrónicos Usando la identificación de correo electrónico en el “remitente”, puede averiguar qué correo electrónico no se envió. También puede hacer algunos filtros para determinar si se trata de una respuesta del tipo “no se puede entregar” o simplemente “fuera de la oficina”.

    Muchas opciones disponibles, solo depende de la cantidad de sudor que desee poner en ella.