Verzögern der übermittlung von E-Mails in C#
Wir schreiben eine Funktion zum senden einer E-Mail-Erinnerung für Kunden in x Anzahl der Tage, und nur gefragt, ob es möglich war, zum verzögern des Sendens von E-Mails ähnlich wie Sie in Outlook (Neue Mail - > Schaltfläche Optionen > nicht vor) in C#.
Kennt jemand einen Weg, dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine Möglichkeit ist, einen Dienst zu erstellen, das läuft auf eine geplante Aufgabe Bearbeiten 'pending' mail. Sie speichern die ausstehenden E-Mails in einer SQL-Datenbank. (Dave details)
Dieser Artikel sieht, die viel versprechende, wenn Sie möchten vermeiden, dass ein 'echter' service
http://www.codeproject.com/KB/aspnet/ASPNETService.aspx
Wenn Sie möchten, senden Sie die E-Mail an einen SMTP-server zu halten für eine Anzahl von Tagen, muss der server diese Funktion unterstützen. Ich würde empfehlen, gegen dieses Vorgehen, jedoch. Wenn Sie hatte ein problem mit fehlenden E-Mails könnte es schwer sein, auf die Spur.
Hier ist, was ich tun würde:
Nicht.
Den Weg, dies zu erreichen wäre für deine Anwendung zu schreiben, die E-Mail an eine Warteschlange (könnte sein, Datenbank -, file, MSMQ, etc.), und schreiben Sie dann einen eigenen Prozess, zu einem späteren Zeitpunkt liest die mail aus der Warteschlange und sendet es.
Soweit ich weiß, wird das SMTP-Protokoll keine Art von "verzögertes senden" - Funktion. Auch, die Funktion, die Sie Verweis in Outlook eigentlich nur hält es in Ihren client Postausgang, bis der dafür vorgesehenen Datum, also es ist eine client-side Funktion, nicht eine server-side-feature.
Den SmtpClient ist ein ziemlich blöder und client dies nicht unterstützt -- sendet sofort, ob Sie synchron oder asynchron sein. Sie können in der Lage sein, es zu tun mit einem Exchange-integration. Ich bin mir nicht sicher, was APIs sind ausgesetzt für den Austausch, obwohl. Der einfachste Weg wäre, um die Nachricht in eine Datenbank-Tabelle zusammen mit der Zeit-zum-senden-und ein off-line Verfahren, die regelmäßig durchsucht diese Tabelle und sucht nach Nachrichten, deren Zeit-zu-senden-Wert übergeben und sind nicht markiert, wie geschickt.