Vorübergehende Probleme beim Senden von E-Mails mit ASP.NET

8

Ich hasse es hier nur einen Stack-Trace zu posten, aber ich habe keine Ideen mehr ... Meine App sendet E-Mails für verschiedene Aufgaben auf der Website, und in 90% der Fälle gibt es keine Probleme. Hin und wieder löst ASP.NET jedoch eine seltsame Ausnahme aus, die sich auf die Mailserver-Konnektivität zu beziehen scheint (ich verwende Google Business Server für E-Mails). Der Fehler ist zu allgemein für mich, um zu debuggen, folglich die Stapelspur unten. Meine App erfasst die Ausnahme und schreibt ein generisches 'try again in 5 minutes response' zurück.

Ich bin von diesem Fehler überrascht, weil:

  • Google E-Mails sind im Allgemeinen sehr zuverlässig (sie werden von meiner Domain gesendet, nicht von gmail.com).
  • Die Volumes sind sehr niedrig, daher sollte dies kein Lade- / Spamming-Problem sein.
  • Der Fehler ist sehr allgemein.
  • Bei einem erneuten Versuch in 5 Minuten kann die E-Mail fast immer ohne Probleme gesendet werden, ohne dass sich die Parameter (Empfänger, Betreff, Text) geändert haben.

Irgendwelche Ideen? Die einzigen offenen Fragen, die ich mir vorstellen kann, sind:

  1. Das Senden von E-Mails ist synchron. Dies ist, was ich tatsächlich auftreten möchte, da ich auf den Benutzer mit einer Erfolgs- / Fehlerstatusmeldung antworten möchte.
  2. Ich benutze Amazon EC2 als Server, wenn das irgendwas mit der Sache zu tun hat.

Der Code:

%Vor%

Die Ausnahme:

%Vor%     
Simon at LabSlice-com 07.09.2010, 15:44
quelle

2 Antworten

5

Ich habe in der Vergangenheit an Massen-E-Mail-Systemen gearbeitet. Die Ausnahmemeldung, die Sie erhalten, ist vollständig beschreibend: Der SMTP-Server nimmt vorübergehend keine E-Mails an. Dies kann auf eine Reihe von Bedingungen zurückzuführen sein:

  1. Der Server ist beschäftigt
  2. Sie senden zu viele E-Mails zu schnell (dies kann Sie wie einen Spammer aussehen lassen)
  3. Allgemeine Fehler

Die Tatsache, dass das erneute Versenden der E-Mail später immer funktioniert, zeigt an, dass dies ein normales, erwartetes Verhalten ist. Es gibt nichts, was Sie anders machen können, um dies zu vermeiden. Es ist eine gängige Methode, die von ISPs verwendet wird, um den Datenverkehr bei Bedarf zu drosseln.

    
Dave Swersky 07.09.2010, 15:50
quelle
0

Zusätzlich zu dem, was Dave Swersky bereits gesagt hat: Sie können die E-Mails, die Sie senden möchten, speichern (z. B. Dateisystem oder Datenbank) und die E-Mail-Generierung von einem Dienst übernehmen lassen. Ihr Dienst würde nach neuen E-Mails zum Senden suchen. Wenn beim Senden ein Fehler auftritt, können Sie die E-Mail wieder in die Warteschlange stellen und es später erneut versuchen.

Vielleicht können Sie sogar einen lokalen STMPServer verwenden, der GoogleMail als Relay-Server verwendet. In diesem Fall könnten Sie die integrierte pickupdirectory-Funktionalität verwenden, anstatt sie selbst zu schreiben.

    
citronas 07.09.2010 16:00
quelle

Tags und Links