Wie man MailCatcher zum Testen von E-Mails verwendet

22. Februar 2024

Lang: cs en de es

Wenn Sie eine Anwendung entwickeln, die E-Mails versendet, müssen Sie in der Regel prüfen, ob die E-Mail versendet wurde. Sie müssen auch den Inhalt der E-Mail überprüfen. Mailcatcher ist ein großartiges Tool für all diese Aufgaben. Es fängt E-Mails ab, damit Sie sicher sein können, dass Sie nichts anfassen, wenn Sie mit echten Benutzern testen, und Sie können den Inhalt einfach auf Ihrem Computer überprüfen. Ein großartiges Feature von Mailcatcher ist, dass Sie es einfach mit dem Docker ausführen können.

Wenn man eine Webanwendung entwickelt und testet, möchte man den Prozess des Versendens von E-Mails und deren Inhalt vollständig testen, aber man stößt auf zwei Probleme:

  • Sie wollen nicht unnötig die Anmeldedaten des E-Mail-Kontos weitergeben
  • Sie wollen nicht, dass die E-Mails den Benutzer erreichen

Wenn Sie E-Mails auf dem Standardweg versenden wollen, bedeutet das, müssen Sie die App irgendwie konfigurieren, um E-Mails über Ihren Mailserver zu versenden, was bedeutet, dass jeder Entwickler Zugang zum Versand von E-Mails über Ihren Mailserver hat.

Sie können die Situation zum Beispiel dadurch lösen, dass Sie die Anwendung so ändern, dass E-Mails nicht verlassen werden. So können Sie nicht versehentlich eine Test-E-Mail an Benutzer senden und Sie brauchen für die Entwicklung keinen Zugriff auf den Mailserver. Aber auch hier wissen Sie nicht, ob das Senden von E-Mails tatsächlich funktioniert. Außerdem können Sie dann den Inhalt der E-Mail nur schwer überprüfen. Außerdem ist es völlig sinnlos, die Anwendung zu ändern.

Eine einfache Lösung für eine solche Situation ist die Verwendung von MailCatcher. Sie leiten den Versand von E-Mails an MailCatcher, der als Mailer für den Empfang von E-Mails fungieren kann. Und von der getesteten App aus können Sie standardmäßig alles ohne Änderungen versenden. Auf diese Weise können Sie sicher sein, dass der Benutzer keine E-Mail verpassen wird. Sie müssen keine Zugangsdaten weitergeben, um E-Mails zu versenden. Und Sie können den Inhalt der E-Mail problemlos im Detail einsehen.

Ich verwende MailCatcher für Entwicklung von Webanwendungen. Aber Sie können ihn auch verwenden, wenn Sie eine Despot-Anwendung entwickeln, ein Konsolendienstprogramm programmieren oder einfach nur zum Testen eines Tools, das E-Mails versendet.

Verwendung

Sie bauen MailCatcher als Mailserver in Ihre Anwendung ein. Anschließend sind alle gesendeten E-Mails in der webbasierten Administrationsoberfläche von MailCatcher einsehbar. In MailCatcher können Sie die E-Mail in ihrer HTML-Version, in der sogenannten "plain text"-Version oder den vollständigen Quellcode der E-Mail einsehen und die E-Mail-Kopfzeilen im Detail betrachten.

Wie sieht MailCatcher aus? Dies ist eine Ansicht einer erfassten E-Mail. Anzeige der HTML-Version der E-Mail:
mailcatcher text html

Anzeige der abgefangenen E-Mail und ihrer reinen Textversion:
mailcatcher plain text

Den Quellcode der erfassten E-Mail anzeigen:
mailcatcher mail source

Es ist auch möglich, die gesamte E-Mail als Quelldatei herunterzuladen - eine Datei mit der Endung "eml".

Bedienung

Sie können MailCatcher als Docker-Container betreiben.

Fügen Sie die folgenden Zeilen in Ihre docker-compose.yml und MailCatcher wird heruntergeladen und ausgeführt, wenn Sie Ihre Entwicklungsumgebung starten.

Mailcatcher:
  image: dockage/mailcatcher
  ports:
    - 1080:1080
Dann ist unter http://localhost:1080/ ist nun die Webadministrationsoberfläche von MailCatcher verfügbar.

Auf Port 1025 steht ein SMTP-Server zur Verfügung, über den Sie E-Mails aus Ihrer Anwendung versenden können.

Verbindung zur Anwendung herstellen

Jetzt müssen Sie Ihre Anwendung so einrichten, dass sie MailCatcher als Mailserver verwendet. Ich zeige Ihnen, wie Sie die Konfiguration ändern können, wenn Sie das PHP-Framework Nette oder Symphony verwenden.

Symphones

Wenn Sie mit das PHP-Framework Symfony Version 6 oder 7 und Symfony Mailer, dann fügen Sie einfach die Konfigurationsdatei hinzu/ändern Sie sie .env.local um eine Zeile:

MAILER_DSN=smtp://mailcatcher:1025

Für Details siehe Symphony Mailer.

Nette

Wenn Sie den das Nette PHP-Framework wird standardmäßig die php-Funktion mail() verwendet, die normalerweise den Systembefehl sendmail aufruft. Daher muss die Konfiguration geändert werden, um das SMTP-Protokoll zu verwenden.

Zum Versenden von Mails in Nette kann man die Klasse Nette\Mail\SendmailMailer verwenden, die die Funktion mail() nutzt. Für den Versand über SMTP gibt es die Klasse Nette\Mail\SmtpMailer.
Idealerweise verwenden Sie jedoch die Nette\Mail\Mailer Schnittstelle in Ihrem Anwendungscode, die von Nette entsprechend der angegebenen Konfiguration vorbereitet und konfiguriert wird. Und lassen Sie diese Klasse per Konstruktor übergeben oder in die .

Fügen Sie die folgende Konfiguration in die neon-Konfigurationsdatei ein:

mail:
	# SmtpMailer verwenden
	smtp: true # (bool) Standard ist false
	Rechner: mailcatcher
	port: 1025
Diese Bearbeitung legt das zu verwendende SMPT-Protokoll und die Parameter für die Verbindung mit dem SMTP-Server fest. Wenn Sie dann die Nette\Mail\Mailer-Schnittstelle verwenden, übergibt Nette Ihnen die konfigurierte Nette\Mail\SmtpMailer-Klasse. So kann man direkt E-Mails verschicken.

Weitere Details finden Sie unter Nette-E-Mails versenden und Nette SMTP Konfiguration.

Videotutorial

Video-Tutorial, wie man MailCatcher zum Laufen bringt und mit einer Webanwendung einsetzt, die im PHP-Framework Symfony programmiert ist:

Andere Lösungen

Andere Lösungen, die einen ähnlichen Dienst anbieten können:

E-Mail Zustellung

Das Versenden von E-Mails und die Zustellung von E-Mails sind zwei verschiedene, wenn auch verwandte Aktionen, die für das Funktionieren von E-Mails erfolgreich sind. Wenn Sie ein Problem mit der E-Mail-Zustellung haben, landen sie im SPAM oder kommen gar nicht erst an. Sie müssen eine detaillierte E-Mail-Zustellbarkeitsanalyse durchführen und Ihre Domain- und Mailserver-Konfiguration entsprechend anpassen.

Wenn Sie eine Beratung oder anderweitige Hilfe zu E-Mails, Nette oder Symfony benötigen, können Sie mich gerne kontaktieren.

Články na podobné téma

Python-Programm zur Steuerung von Docker über die API
Python OpenAI API
Erstellen einer WebSocket-Webanwendung und Einrichten eines Proxys
Projektmanagement: agile Softwareentwicklung
Wie man alte PHP-Anwendungen ausführt
Was ein guter Programmierer wissen sollte
Programmiersprache Rust
NodeJS: Entwicklung, Serverkonfiguration
Nette Sicherheitslücke CVE-2020-15227
REST API: Plattform-API
Kundenspezifisches Web- und E-Mail-Hosting mit ISP Config-Software
Programmierung in SQL: PostgreSQL, MySQL/MariaDB
HTTPS: sicheres Web
NoSQL-Datenbank Mongo DB
Herstellen einer Verbindung zu Microsoft SQL Server unter Linux
Was ist die Stellenbeschreibung eines Programmierers?
Lokalisierung von Python-Anwendungen
Welches Mail- und Webhosting Sie wählen sollten
Digispark - Atmel ATtiny Mikrocontroller mit Arduino IDE programmieren
Entwicklung für ARM-Prozessoren mit Arduino IDE
Wie programmiere ich den ESP8266 WiFi-Prozessor?
Offenes Smartphone mit Linux - Openmoko Neo FreeRunner

Newsletter

Wenn Sie daran interessiert sind, gelegentlich Neuigkeiten per E-Mail zu erhalten.
Sie können sich registrieren, indem Sie Ihre E-Mail-Adresse eingeben News-Abonnement.


+