Frage

Wenn ich einen Benutzer anlegen für meine web-Anwendung, eine SMTP-E-Mail (mit ASP.NET's SmtpClient) wird an den Benutzer gesendet, mit der automatisch generierte Passwort.Allerdings, manchmal, was ich merke, ist, dass es auch mal aus und den neuen Benutzer einfach nicht erhalten die E-Mail mit dem Passwort.

Okay, also werde ich eine Meldung anzeigen, die angibt, dass die E-mail nicht gehen durch, aber der Benutzer ist erstellt.

Also, die sys-admin hat 2 Optionen, so weit:

  1. Zurücksetzen des Kennworts für den Benutzer, und hoffen, dass Sie einen anderen SMTP-E-mail gesendet wird, mit dem automatisch generierten Passwort.
  2. Löschen und erstellen Sie den Benutzer.

Ich könnte ein rollback für die Benutzer erstellen, wenn die smtp wird nicht gesendet, aber was ist die beste Vorgehensweise, um dieses problem anzugehen?

Ich denke, ich sollte es erneut zu senden die E-Mail 3-mal mit einer Pause von 5 Sekunden.So 15 Sekunden wäre das Worst-case-Szenario.

Ist dies der Weg zu gehen?

War es hilfreich?

Lösung

Nun, je nach Plattform, wenn Sie nur Ihre E-Mails an einem lokalen MTA Hand von können, sollte es die Wiederholungen und so handhaben. Ihr Programm kann nur die E-Mail Warteschlange und weitermachen, sich keine Sorgen über den Umgang mit Timeouts und graylists etc.

Wenn die Nachricht noch nicht zugestellt werden kann, können Sie immer versuchen, es erneut gesendet wird (über ein Passwort-Reset-Funktion). Wenn das auch nicht, wahrscheinlich gab es einen Fehler in der E-Mail-Adresse, und ich würde das Konto vorschlagen zu löschen, so dass der Benutzer neu registrieren.

Das ist natürlich, ist vielleicht nicht möglich sein, auf einigen Systemen, je nachdem, was mit einem unbestätigten Benutzer getan werden kann -., Das hängt wirklich davon ab, was Sie Menschen erlauben zu tun, bevor die E-Mail bestätigt wird

Andere Tipps

Es klingt wie Ihr Web-App SMTP spricht direkt mit Ihrem Benutzer-Mail-Server. [Ihr Web-App ist ein MUA (Mail User Agent) im Gespräch mit dem MTA des Benutzers (Mail Transfer Agent).] Nichts sagt, dass der MTA des Benutzers erreichbar sein muss, oder zur Zeit arbeiten. Sie müssen Ihre eigenen MTA laufen, so dass Sie sicher, dass jemand Warteschlangen bereitstellt, Wiederholungen, etc.

Wenn Sie wirklich nach hinten bücken wollen, könnten Sie tun, was Sie tun (nur ein Versuch, obwohl), Ausweich die Nachricht an Warteschlangen und für mindestens 24 Stunden auf einem langsameren Zeitplan erneut zu versuchen weiterhin, und setzen diese unfertige Zustand an den Benutzer.

Die offizielle Antwort, wie Sie Ihre App soll verhalten können in RFC1123 (Anforderungen gefunden werden für Internet-Hosts - Anwendungs-und Support) :

  

5.3.1.1 Senden Strategie

     

Das allgemeine Modell eines Absenders-SMTP   ein oder mehr Prozesse, die   versuchen, periodisch zu übertragen,   Ausgangspost. In einem typischen System,   das Programm, das eine Nachricht verfasst   hat einige Verfahren zum Anfordern   sofortige Aufmerksamkeit für ein neues Stück   abgehende Post, beim Versenden, die nicht kann   sofort übertragen werden muss sein   Warteschlange gestellt und periodisch durch die erneut versucht   Absender. Ein Mail-Warteschlangeneintrag wird   nicht nur die Nachricht selbst   sondern auch die Umschlaginformationen.

     

Der Absender muss erneut versucht eine Verzögerung   bestimmte Ziel nach einer   Versuch fehlgeschlagen ist. Im Allgemeinen ist die   Wiederholungsintervall sollte mindestens 30 sein,   Protokoll; jedoch anspruchsvollere   und variable Strategien werden   vorteilhaft, wenn der Absender-SMTP kann   bestimmen, den Grund für die Nicht   Lieferung.

     

Erneute Versuche fortgesetzt werden, bis die Nachricht   übertragen oder der Absender aufgibt;   die Give-up-Zeit muss in der Regel sein   mindestens 4-5 Tage. Die Parameter zu   der Wiederholungs Algorithmus muss sein   konfigurierbar.

Wenn Sie ASP.NET verwenden und die System.Net.Mail Klassen, die Sie senden die wahrscheinlich die E-Mail über die IIS-Instanz auf der Web-Server-Maschine (ich bin nicht sicher, da Sie nicht angegeben). Es ist kein guter Weg, zu wissen, was mit Ihrem Mail Transfer Agent los ist (IIS SMTP). Es hat seine eigene Wiederholungslogik und standardmäßig, könnte es eine lange Zeit für die Nachricht übermittelt werden, nehmen.

Wie Erkennen Sie, dass die Mail nicht zugestellt wurde? Was ist die "timeout" kommt aus?

Sie sollten einen Hintergrundprozess, die das Versenden von E-Mail verarbeitet. Wenn die Lieferung an den MTA erfolgreich ist, sollten Sie davon ausgehen, alles ist gut. Sofern Sie sich für SPAM die schwarze Liste gesetzt werden, werden die meisten MTAs erneuten Versuch halten, bis sie durchkommen. Wenn Sie tatsächlich einen Fehler die Nachricht mit Ihnen MTA Abwurf, dann versuchen Sie es erneut es auf jeden Fall, oder herauszufinden, was den Fehler verursacht hat und den Fehler zu beheben. Ehrlich gesagt, soll dieser Teil nie versagen.

Sie mögen vielleicht die Absenderadresse für NDR-Nachrichten überwachen, so dass Sie irgendeine Art von Maßnahmen ergreifen können, wenn Sie sicher wissen, wann die E-Mail nicht zugestellt wurde. Aber wenn der Benutzer noch nicht an dem System anmelden, gibt es keine gute Möglichkeit, sie wissen zu lassen, was passiert ist. Vielleicht könnten Sie ein Cookie mit einem Wert festgelegt, die Sie mit der E-Mail in Verbindung, und etwas auf der Login / Registrierungsseite setzen, wenn Sie nicht in der Lage sind, die Post zu liefern.

IMHO sollten Sie den Benutzer benachrichtigen, und bat ihn, die E-Mail zu überprüfen, ohne Wiederholungen.

Wenn der Benutzer die E-Mail nicht überprüfen und verläßt die Seite, rollen Sie sich besser auf das Konto zurück, da der Benutzer es sowieso nicht zugreifen kann.

Die meisten Fälle von Timeout würden durch ungültige E-Mail-Konten verursacht werden. Benutzer entweder einen Fehler gemacht oder haben Sie einen nicht vorhandenen E-Mail-addressto vermeidet spammed werden.

Wenn möglich, fragen Sie nicht für Ihre Nutzer E-Mails. Yhe Regel Nummer eins der Programmierung sein sollte:. Schalten Sie den Benutzer nicht stören

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top