saber recibieron mail leyeron leido fue envio cómo correo como c# .net asp.net smtp

c# - recibieron - como saber si ya leyeron un correo



Cómo comprobar si el correo ha sido enviado con éxito. (8)

Estoy desarrollando una aplicación Asp.Net, donde envío un correo a la dirección de correo electrónico del usuario, si se le olvida la contraseña.

Quiero comprobar si el correo ha sido enviado con éxito o no. ¿Hay algún método para saberlo con seguridad?

EDITAR

En caso de que no exista una ID de correo electrónico, entonces detectaría una falla.


Coloque el método .Send (msg) en un bloque try catch, y capture SmtpFailedRecipientException.

try { mail.Send(msg); } catch (SmtpFailedRecipientException ex) { // ex.FailedRecipient and ex.GetBaseException() should give you enough info. }


El método SmtpClient.Send generará una excepción si hay un problema al enviar. Pero más allá de llevar ese mensaje al servidor SMTP, no hay forma de saber si llega al destino desde allí.


Estoy usando gmail SMTP para enviar correos con mi programa. Un correo falso enviado devuelve Ok, incluso con la captura SmtpFailedRecipientException.

Pero cuando verifico con Outlook mi destinatario de Gmail veo que el correo no se envió con una explicación. Con una notificación de estado de entrega sujeto (falla)

Mi pregunta es posible obtener esta notificación en el programa.

Encontré esto pero no es para POP

Notificar al cliente C #, cuando el servidor SMTP reciba un nuevo correo electrónico


No. El correo electrónico (basado en SMPT) es un protocolo de transporte no confiable y, aunque hay algunos trucos para detectar que un correo electrónico ha sido recibido y leído, por ejemplo, incrusta una URL de imagen individualizada en el correo electrónico y realiza un seguimiento de la imagen. ha sido solicitado por el cliente del destinatario, no existe una forma absolutamente confiable para cumplir con su solicitud.


Puede usar las opciones de notificación de entrega para recibir un recibo.

Si tiene un objeto MailMessage llamado correo, haga esto:

mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;


Según la spec :

S: 220 smtp.example.com ESMTP Postfix C: HELO relay.example.org S: 250 Hello relay.example.org, I am glad to meet you C: MAIL FROM:<[email protected]> S: 250 Ok C: RCPT TO:<[email protected]> S: 250 Ok C: RCPT TO:<[email protected]> S: 250 Ok C: DATA S: 354 End data with <CR><LF>.<CR><LF> C: From: "Bob Example" <[email protected]> C: To: Alice Example <[email protected]> C: Cc: [email protected] C: Date: Tue, 15 Jan 2008 16:02:43 -0500 C: Subject: Test message C: C: Hello Alice. C: This is a test message with 5 header fields and 4 lines in the message body. C: Your friend, C: Bob C: . S: 250 Ok: queued as 12345 C: QUIT S: 221 Bye {The server closes the connection}

Tan pronto como el servidor dice 250 Ok: queued as 12345 , no puede estar seguro de si realmente envió un correo electrónico o no, o si fue entregado.


Si estás usando System.Net.Mail prueba

message.DeliveryNotificationOptions = System.Net.Mail.DeliveryNotificationOptions.OnSuccess;


Si su SmtpMail.Send(message) no devuelve ningún error, significa que el correo electrónico fue enviado al servidor SMTP, entonces usted está fuera de su jurisdicción, eso es lo que puede saber.