Arbeiten an einer App mit Benachrichtigung per E-Mail. Ich möchte testen, ohne E-Mails an Produktionsserver und Clients zu senden. Vor ein paar Jahren erinnere ich mich, dass jemand unseren Exchange-Server mit einer schlechten E-Mail-Schleife heruntergefahren hat und es vorziehen würde, das nicht zu wiederholen ...
Irgendwelche Vorschläge für ein Dev-Setup? Momentan denken Sie, dass ein einfacher SMTP-Server die Aufgabe erledigen wird, aber ich kenne diesen Bereich nicht. Ich würde die Fähigkeit benötigen, alle E-Mails zu sehen, die an den Server gesendet werden, aber sie sollten nie geliefert werden.
Danke.
Papercut passt perfekt zu dem, wonach Sie suchen. Es wurde in den letzten Monaten öffentlich zugänglich gemacht. Ich benutze es seit einem Monat. Es könnte nicht einfacher sein, E-Mail-Funktionalität zu testen.
Es ist ziemlich einfach, einen Alias einzurichten, der an eine Datei geliefert wird, und nicht über einen Zustellmechanismus in einem der gängigen Unix / Linux-Mailserver wie Postfix oder Sendmail. Während des Tests können Sie diese Datei einschränken, um zu sehen, dass die E-Mail gesendet wird, wenn Sie dies erwarten. Nachdem die Tests abgeschlossen sind, können Sie sie an den Ort weiterleiten, an den sie wirklich gehen soll.
Je nachdem, was Ihr E-Mail-Mechanismus ist, wäre eine andere Alternative, ein Testmail-Skript (py, php, sh) zu erstellen, das alle bereitgestellten Argumente aufzeichnet und sie in eine Tag-Tabelle mit Ereigniszeitstempeln ablegt. Es ist nicht elegant, aber würde für das Debuggen tun. Trick hängt alles davon ab, wie Sie E-Mail senden.
Wenn Sie smtp und nicht sendmail verwenden, schreiben Sie in ähnlicher Weise eine Ghetto-App, die auf einer hohen Portnummer lauscht und nur dumm mit den richtigen Werten antwortet.
Ihre Frage hat die Umgebung nicht beschrieben, aber wenn Sie eine OO-Sprache (z. B. Java) verwenden, können Sie die Abhängigkeitsinjektion verwenden. Schreibe eine MessageSender
Schnittstelle mit zwei Implementierungen; Eins ( EmailMessageSender
) sendet tatsächlich E-Mails, während das andere ( FileMessageSender
) die Nachricht in einer Zeichenfolge erfasst.
Schreiben und testen Sie EmailMessageSender
isoliert; Sobald es verifiziert ist, legen Sie es in das Regal.
Schreiben Sie die anderen Teile des Systems gegen MessageSender
und testen Sie sie mit einer (injizierten) Instanz von FileMessageSender
. (Wenn FileMessageSender
auch den Abruf des Inhalts der "gesendeten Nachricht" zulässt, können Sie ihn im Komponententest verwenden.)
Nachdem Sie den Rest des Systems verifiziert haben, stellen Sie es mithilfe einer korrekt konfigurierten Instanz von EmailMessageSender
(erneut über Injection) bereit.
Sie können Mailtrap verwenden. Sie können dies auf Ihrem Staging-Server oder Entwicklungsserver einrichten. Es ist einfach zu bedienen und Sie können auch Produktions-E-Mail-Adresse verwenden. Alle E-Mails werden in den E-Mail-Posteingang von Mailtrap eingefangen. Es ist einfacher einzurichten.