PHP Email Catcher

Mittwoch, 23. Oktober, 2024

Ich habe für diverse Projekte eine PHP-Entwicklungsumgebung. Mittlerweile als Docker Container.

Wenn meine Applikation in der Live Umgebung Emails versendet - wie gehe ich damit in der Dev-Umgebung um?

Ich wollte einen Email-Catcher haben, der statt Sendmail oder Postfix die Emails zu versenden, für mich abfängt.
Zum Glück ist das nicht soo schwer, dies ohne weitere Abhängigkeiten zu coden. So entstanden eine PHP-Klasse und 2 Skripte: eines, um die Emails vom STDIN einzufangen - und ein Viewer.

Ganz wichtig: es musste einfach zu verwenden sein! Voila: die Konfiguration besteht aus einer Zeile in der php.ini.

Wenn du in einer PHP Enwicklungsumgebung die versendeten Email abfangen und lesen willst: hier ist ein quick winner!

📜 License: GNU GPL 3.0
📄 Source: https://git-repo.iml … rce/php-emailcatcher
📗 Docs: https://os-docs.iml. … ch/php-emailcatcher/ (en)

Screenshots - so sieht es aus:

2024-10-23-screenshot_list_emails.png 2024-10-23-screenshot_show_email.png 2024-10-23-screenshot_show_html_email.png

Und so geht es:

Installation mit Git:

Unterhalb des Webroot lege ich im Unterverzeichnis “vendor” die Software ab.

cd [WEBROOT]
cd vendor
git clone https://git-repo.iml.unibe.ch/iml-open-source/php-emailcatcher.git emailcatcher

Einfangen der Email aktivieren:

In der php.ini ist mit sendmail_path auf das Skript php-sendmail.php zu verweisen.

[PHP]
...
sendmail_path = "php [WEBROOT]/vendor/emailcatcher/php-sendmail.php"

Anm: Sofern php nicht im Pfad ist, muss man statt “php ” den kompletten Pfad angeben z.B. “/usr/bin/php “.

Test-Email versenden.

Viewer starten.

Unterhalb “vendor” ist im emailcatcher Verzeichnis eine viewer.php - die öffnet man im Webbrowser.

Z.B.: http://localhost/vendor/emailcatcher/viewer.php

Tja, und das war es bereits. Viel Spass damit!

Update:

Wenn man HTML Emails versendet und das Layout ansehen möchte, dann brauchte es in der präsentierten Version einige Klicks. Unnötige Klicks. Und immer wieder. HTML Emails wollte ich dann doch direkt sehen.
Sieht wer weiteres Verbesserungspotetial zur Effiziensteigerung? Lasst es mich wissen oder macht einen Pull-Request.