webentwicklung-frage-antwort-db.com.de

So prüfen Sie, ob die Mail erfolgreich gesendet wurde

Ich entwickle eine Asp.Net-Anwendung, bei der ich eine E-Mail an die E-Mail-Adresse des Benutzers sende, wenn er das Kennwort vergisst.

Ich möchte prüfen, ob die Mail erfolgreich gesendet wurde oder nicht .. Gibt es irgendeine Methode, um dies sicher zu wissen?.

EDIT

Falls eine E-Mail-ID nicht existiert, würde ich einen Fehler feststellen.

20
Vaibhav Jain

wenn Ihre SmtpMail.Send(message)-Methode keinen Fehler zurückgibt, bedeutet dies, dass die E-Mail an den SMTP-Server gesendet wurde. Dann befinden Sie sich außerhalb Ihres Zuständigkeitsbereichs.

18

Wenn Sie System.Net.Mail verwenden, probieren Sie es aus

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

Fügen Sie die .Send (msg) -Methode in einen try-catch-Block ein, und fangen Sie SmtpFailedRecipientException ab.

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

Nach 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}

Sobald der Server 250 Ok: queued as 12345 sagt, können Sie nicht sicher wissen, ob er wirklich eine E-Mail gesendet hat oder nicht oder ob er zugestellt wurde.

6
Anton Gogolev

Nein. E-Mail (SMPT-basiert) ist ein unzuverlässiges Transportprotokoll, und obwohl es einige Hacks gibt, die erkennen, dass eine E-Mail empfangen und gelesen wurde, z. Durch das Einbetten einer individualisierten Bild-URL in die E-Mail und das Nachverfolgen, dass das Bild vom Client des Empfängers angefordert wurde, gibt es keine absolut zuverlässige Möglichkeit, Ihre Anfrage zu erfüllen.

4
jarnbjo

Die SmtpClient.Send -Methode löst eine Exception aus, wenn ein Problem beim Senden auftritt. Abgesehen davon, dass diese Nachricht an den SMTP-Server gesendet wird, kann nicht festgestellt werden, ob sie von dort zum Ziel gelangt.

4
Ken Pespisa

Sie können die DeliveryNotificationOptions verwenden, um eine Quittung zu erhalten.

Wenn Sie ein MailMessage-Objekt namens mail haben, machen Sie folgendes:

mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
4
Aaron

Ich verwende Google Mail SMTP zum Versenden von Mails mit meinem Programm. Eine gefälschte E-Mail wird zurückgegeben Ok auch mit SmtpFailedRecipientException-Trap.

Wenn ich jedoch bei Outlook nach meinem gmail-Empfänger schaue, wurde die E-Mail nicht mit einer Erklärung gesendet. Mit Betreff Zustellungsstatusbenachrichtigung (Fehler)

Meine Frage ist es möglich, diese Benachrichtigung innerhalb des Programms zu erhalten.

Ich habe das gefunden, aber es ist nicht für POP

Benachrichtigen Sie den C # -Client, wenn der SMTP-Server eine neue E-Mail erhält

0
Ismail Gunes