Laden...

[gelöst] Wann wird die SmtpFailedRecipientsException geworfen?

Erstellt von hypersurf vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.579 Views
H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 6 Jahren
[gelöst] Wann wird die SmtpFailedRecipientsException geworfen?

Hallo Leute,

ich habe ein Modul in dem massenweise Rechnungen per SMTP versendet werden sollen (gerne mal 500 Stück oder mehr in einem Lauf).

Ich bekomme bei einigen zu versendenden Mails beim Aufruf der Send-Methode eine Exception:

Fehlermeldung:
System.Net.Mail.SmtpFailedRecipientsException

Fehlermeldung:
Fehler beim Versenden der E-Mail: Senden an alle Empfänger nicht möglich.
bei System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, Boolean allowUnicode, SmtpFailedRecipientException& exception)
bei System.Net.Mail.SmtpClient.Send(MailMessage message)
bei Smart_Order_Management.Framework.Mail.MailSendProviderSMTP.SendMail(MailSMTP pMail)

Die MSDN sagt folgendes zu der Exception:

The message could not be delivered to one or more of the recipients in MailMessage.To, MailMessage.CC, or MailMessage.Bcc.

Leider hilft mir diese Beschreibung nicht so richtig beim Ermitteln der genauen Ursache. Habt Ihr Erfahrungen mit dieser Exception und ggf. Ideen wie man sie vermeiden kann, bzw. was die genaue Ursache sein könnte?

Die Mails die versendet werden sollen sind vollständig: Empfänger (To), Betreff, Body - alles vorhanden und korrekt. Die Empfänger-Mailadressen existieren auch.

Gruß hypersurf

16.806 Beiträge seit 2008
vor 6 Jahren

Wenn Dir die Doku nicht hilft, dann würde ich Dir einen Blick in den Quellcode vom .NET Framework empfehlen.
Dort solltest Du alle Stellen sehen, wo die Exception geworden wird.

SMTP ist zudem nicht wirklich so dafür gedacht, so eine Masse an Mails zu verschicken.
Viele SMTP Server akzeptieren auch gar nicht so viele Empfänger in einer einzigen Nachricht; kenne genug Server mit Limits von 50 Empfängern.

Oft verwendet man daher distribution lists statt SMTP.
Es kann neben einer ungültigen Adresse auch durchaus sein, dass Du genau in solch ein Limit rennst.

H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 6 Jahren

Danke, das werd' ich mir direkt anschauen 😃

T
2.219 Beiträge seit 2008
vor 6 Jahren

Ich hatte solch einen Fall schon ein paar Mal.
Das Problem lag aber immer daran, dass die Email Adressen nicht stimmten.
Dort waren entweder Tippfehler, es fehlten die Endungen(.de etc.) oder ähnliches.
Habt ihr bereits alle Empfänger in der Liste verifiziert?
Kann auch sein, wenn es Private Adresse nvon GMX und co. sind, dass einige nicht mehr vorhanden sind.
Wenn das Email Konto gekündigt wird, werden diese auch gelöscht und ein Versand an diese Adressen ist dann nicht mehr möglich, da die Server diese nicht mehr kennen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

16.806 Beiträge seit 2008
vor 6 Jahren

Habt ihr bereits alle Empfänger in der Liste verifiziert?

Die Mails die versendet werden sollen sind vollständig: Empfänger (To), Betreff, Body - alles vorhanden und korrekt. Die Empfänger-Mailadressen existieren auch.

T
2.219 Beiträge seit 2008
vor 6 Jahren

@Abt
Die Fehlermeldung ist nur ziemlich eindeutig.
Entsprechend ist das Problem eine Emailadresse.
Wenn der Server nicht erreichbar wäre, wäre eine andere Exception geworfen worden.
Ich versende in einem Projekt auch über den Smtp Client massig Emails, entsprechend kenne ich das Problem schon recht gut.

Die Frage ist nur, wann die Emails geprüft wurden.
Bei 500 Emails kann ich mir nicht vorstellen, dass jede einzelne kurz mal angeschrieben wurde um zu schauen, ob diese noch da ist.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

1.040 Beiträge seit 2007
vor 6 Jahren

Zum Testen könnte man ja einfach mal eine Fake-Adresse anmailen. 😉

849 Beiträge seit 2006
vor 6 Jahren

Nur so zum Verständnis.. Abt scheint es so zu verstehen das Du eine Email an 500 Empfänger schickst. Scheint mir bei Rechnungen aber eher unwarscheinlich. Mit 500 in einem Lauf meinst Du 500 Emails an 1 (oder 2 oder 3) Adresse(n) in einer Schleife oder?

Dann kannst Du allerdings durch loggen oder debuggen feststellen welche das genau sind, und selbst testweise Emails schicken.

Auch möglich sind Regeln des sendenen smtp Servers, amok laufende Antiviren programme, sendelimits etc.

Gibts eine InnerException?
Zu guter letzt könnte man sich mit dem Wireshark dazwischen hängen(bzw Fiddler? kann Fiddler smtp?) um die genaue Antwort des Servers zu bekommen.

H
hypersurf Themenstarter:in
523 Beiträge seit 2008
vor 6 Jahren

Nur so zum Verständnis.. Abt scheint es so zu verstehen das Du eine Email an 500 Empfänger schickst. Scheint mir bei Rechnungen aber eher unwarscheinlich. Mit 500 in einem Lauf meinst Du 500 Emails an 1 (oder 2 oder 3) Adresse(n) in einer Schleife oder?

Es werden einzelne Mails generiert. Also pro Rechnung eine E-Mail. Bei 500 Rechnungen dann 500 Mails.

Ich hab' es gerade mit der Datenbank unseres Kunden debuggen können. Die Inner-Exception erklärt das Verhalten: Das Postfach ist wegen dem Versand zu vieler Mails innerhalb kurzer Zeit gesperrt.

Eigentlich sollte der vollständige Stacktrace inkl. aller InnerExceptions in der Logdatei unserer Applikation stehen, wovon ich gestern Abend bei der Prüfung auch ausgegangen war. Da scheint sich wohl ein Bug eingeschlichen zu haben.

War wohl schon zu spät gestern Abend um das direkt zu sehen. Danke für Eure Hilfe!

16.806 Beiträge seit 2008
vor 6 Jahren

Das ist das, was ich mit den SMTP Limits meine. Da gibt es viele, die ich jetzt nicht alle aufgezählt habe.
Menge an Empfängern und Menge an Nachrichten sind nur ein der wenigen davon.