Lokale Entwicklung: Mails abfangen und ansehen

Bei der täglichen Arbeit kommt es immer wieder vor, dass man Mails generieren, gestalten und verschicken muss. Man will natürlich wissen, ob alles richtig aussieht und funktioniert. Nun habe ich mir vor einiger Zeit ein Mailrelay konfiguriert, um wirklich richtige Mails von meiner lokalen Entwicklungsumgebung verschicken zu können. Geht natürlich – nur hin und wieder kommen natürlich doch Mails dazwischen, welche an den Kunden gehen. Oder noch schlimmer: An den Kunden des Kunden.

Da will man sich natürlich nicht immer entschuldigen und rechtfertigen, warum das gerade eigentlich passiert ist. Abhilfe schafft hier eigentlich nur eine Lösung: Kein SMTP mehr verwenden. Das heißt, gar keine richtigen Mails mehr verschicken. Also braucht man ein Stück Software, welches das Ganze emuliert und alle Mails auflistet.

Mailcatcher

Genau hier setzt das Programm Mailcatcher an. Dieser lässt sich ganz einfach über gem (den Ruby Paket-Manager) installieren.

Danach wird mailcatcher einmal als daemon gestartet:

In der php.ini muss man noch den entsprechenden Pfad nachpflegen:

Wenn man nun eine Mail versendet, taucht diese direkt im Web-Frontend auf. Dieses ist unter der Adresse http://localhost:1080/ erreichbar. Funktionierte bei mir auf Anhieb. Zu beachten ist, dass auf der offiziellen Seite der falsche Port angegeben ist. Nicht vertun!

Mailcatcher

Funktioniert jedenfalls super. Ich mag diese Lösung. Besonders cool ist auch, dass man direkt den Source sehen kann. Dafür ist unter Apple Mail eine Tastenkombination notwendig, welche ich ständig vergesse.

Beenden kann man Mailcatcher über die Weboberfläche – dazu klickt man einfach oben rechts auf Quit. Oder man killt den Prozess. Der Nachteil ist, dass man immer eine Exception bekommt wenn der Dienst gerade nicht läuft. Eventuell muss man sich noch ein Shellscript ausdenken, welches Mailcatcher nutzt, wenn der Dienst läuft und ansonsten ganz normal Mails über das Relay verschickt.

FakeSMTP

Eine ähnliche Lösung bietet die Java-Anwendung FakeSMTP (GitHub). Einfach unter Download direkt das jar-File laden. Alternativ kann man sich den Stand mit Maven auch selbst bauen.

Dazu einfach das git repo klonen:

Wenn man Maven noch nicht installiert hat, sollte man das nachholen:

Dann einfach bauen mit

Der Build sollte in etwa so quittiert werden:

Im target-Verzeichnis liegt dann das jar, welches man wie folgt startet:

In der php.ini wird dazu ganz einfach wieder sendmail konfiguriert:

Eigentlich hatte mir vorgenommen, an dieser Stelle eine Postfix-Konfiguration zu zeigen. Leider hat sich dieser Dienst aber bei mir total verabschiedet und startet nicht mehr. Ich hoffe, dass ich das bald in den Griff bekomme. Zwei Stunden Suche haben leider nichts ergeben.

MockSMTP

Eine kostenpflichtige Lösung bietet MockSMTP. Funktioniert ähnlich wie FakeSMTP, bietet aber eine native Mac OS UI. Die Frage ist dann, ob man die 9 Euro ausgeben muss – die anderen Lösungen funktionieren eben auch wunderbar. Ich habe die Software nicht getestet und kann daher nichts über die Qualität sagen. Nur der Vollständigkeit halber genannt.

Mailtrap

Möchte man nichts installieren, kann man auch einfach Mailtrap nutzen. Dieser Dienst ist für einen Benutzer mit einer Mailbox kostenlos. Maximal 100 Mails können gespeichert werden. Klingt auch sehr interessant, aber für mich eher unnötig, da es lokal etliche andere Lösungen gibt, welche genau die gleiche Aufgabe verrichten.

Windows

Windows-Nutzer sollten sich einmal Papercut oder smtp4dev ansehen – über die Qualität der Software kann ich allerdings nichts sagen.

Fazit

Ich werde mein Glück erstmal mit Mailcatcher versuchen. Kein Stress mit Konfiguration, super schnell eingerichtet und eben kostenlos. Ich bin gespannt, wie gut sich die Software in Sachen HTML-Mails schlägt.

Über

Jahrgang 87, gelernter Softwareentwickler und fast ein Jahrzehnt Erfahrung im Bereich Web-Entwicklung mit PHP und Web-Design. Diese Eigenschaften machen mich zu einem geeigneten und geschätzten Ansprechpartner für die Umsetzung Ihres Projektes. Weiterhin bin ich seit Ende 2013 Magento Certified Developer.