Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[gelöst] Wann wird die SmtpFailedRecipientsException geworfen?
hypersurf
myCSharp.de - Member



Dabei seit:
Beiträge: 520
Herkunft: Münster

Themenstarter:

[gelöst] Wann wird die SmtpFailedRecipientsException geworfen?

beantworten | zitieren | melden

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:
Fehler
System.Net.Mail.SmtpFailedRecipientsException
Fehler
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:
Zitat
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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von hypersurf am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16103

beantworten | zitieren | melden

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.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
hypersurf
myCSharp.de - Member



Dabei seit:
Beiträge: 520
Herkunft: Münster

Themenstarter:

beantworten | zitieren | melden

Danke, das werd' ich mir direkt anschauen :)
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1892
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16103

beantworten | zitieren | melden

Zitat von T-Virus
Habt ihr bereits alle Empfänger in der Liste verifiziert?
Zitat von hypersurf
Die Mails die versendet werden sollen sind vollständig: Empfänger (To), Betreff, Body - alles vorhanden und korrekt. Die Empfänger-Mailadressen existieren auch.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1892
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

@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.
private Nachricht | Beiträge des Benutzers
p!lle
myCSharp.de - Member

Avatar #avatar-3556.jpg


Dabei seit:
Beiträge: 1053

beantworten | zitieren | melden

Zum Testen könnte man ja einfach mal eine Fake-Adresse anmailen.
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von unconnected am .
private Nachricht | Beiträge des Benutzers
hypersurf
myCSharp.de - Member



Dabei seit:
Beiträge: 520
Herkunft: Münster

Themenstarter:

beantworten | zitieren | melden

Zitat von unconnected
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!
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16103

beantworten | zitieren | melden

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.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers