Comment vérifier si le courrier a été envoyé avec succès

Je développe une application Asp.Net, dans laquelle j’envoie un courrier à l’adresse électronique de l’utilisateur, s’il oublie le mot de passe.

Je veux vérifier si le courrier a été envoyé avec succès ou non. Existe-t-il une méthode pour le savoir avec certitude?

MODIFIER

Au cas où un email id n’existe pas, alors je détecte un échec.

si votre SmtpMail.Send(message) ne renvoie aucune erreur, cela signifie que l’e-mail a été envoyé au serveur SMTP, alors vous êtes en dehors de votre juridiction, c’est à quel point vous pouvez le savoir.

Si vous utilisez System.Net.Mail, essayez

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

Placez la méthode .Send (msg) dans un bloc try catch et attrapez SmtpFailedRecipientException.

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

Selon 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: S: 250 Ok C: RCPT TO: S: 250 Ok C: RCPT TO: S: 250 Ok C: DATA S: 354 End data with . C: From: "Bob Example"  C: To: Alice Example  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} 

Dès que le serveur dit 250 Ok: queued as 12345 , vous ne pouvez pas savoir avec certitude s’il a réellement envoyé un courrier électronique ou non, ou s’il a été livré.

Non. L’e-mail (basé sur SMPT) est un protocole de transport peu fiable et, même s’il existe quelques piratages permettant de détecter qu’un e-mail a été reçu et lu, par exemple en incorporant une URL d’image personnalisée dans l’e-mail et en vérifiant que l’image a été demandé par le client du destinataire, il n’existe aucun moyen absolument fiable de répondre à votre demande.

La méthode SmtpClient.Send générera une exception en cas de problème d’envoi. Mais au-delà de l’envoi de ce message au serveur SMTP, il est impossible de savoir s’il parvient à la destination.

Vous pouvez utiliser DeliveryNotificationOptions pour recevoir un accusé de réception.

Si vous avez un object MailMessage nommé mail, procédez comme MailMessage :

 mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess; 

J’utilise Gmail SMTP pour envoyer des mails avec mon programme. Un faux courrier envoyé renvoie OK même avec l’interruption SmtpFailedRecipientException.

Mais lorsque je vérifie avec Outlook mon destinataire gmail, je constate que le courrier n’a pas été envoyé avec une explication. Avec un sujet Notification de statut de livraison (échec)

Ma question est la suivante: il est possible d’obtenir cette notification dans le programme.

J’ai trouvé ça mais ce n’est pas pour POP

Notifier le client C # lorsque le serveur SMTP reçoit un nouvel e-mail