Skip to main content

Was ist die E-Mail-Funktion von Laravel

Die E-Mail-Funktion von Laravel basiert auf dem Symfony Mailer und unterstützt Treiber wie SMTP, Mailgun, Postmark, Resend, Amazon SES und sendmail.
Der früher in Laravel eingesetzte SwiftMailer ist veraltet. Seit Laravel 9 wird der Symfony Mailer verwendet.
Die E-Mail-Konfiguration wird in config/mail.php verwaltet. Über die .env-Datei können Sie den verwendeten Treiber wechseln.

Eine Mailable-Klasse erstellen

In Laravel wird jede E-Mail, die die Anwendung versendet, als „Mailable“-Klasse dargestellt. Mit dem Artisan-Befehl make:mail erzeugen Sie eine solche Klasse.
Die generierte Klasse wird im Verzeichnis app/Mail/ abgelegt.

Mailable konfigurieren

Die generierte Mailable-Klasse besitzt die drei Methoden envelope(), content() und attachments().

Absender konfigurieren

Über die Methode envelope() können Sie den Absender angeben.
Wenn Sie in config/mail.php eine globale Absenderadresse hinterlegen, können Sie die Angabe in jeder einzelnen Mailable weglassen.

E-Mail-Inhalt konfigurieren

Über die Methode content() geben Sie das Blade-Template an. Daten, die Sie im Konstruktor als public-Eigenschaft setzen, stehen automatisch im Template zur Verfügung.
Erstellen Sie das zugehörige Blade-Template (resources/views/mail/orders/shipped.blade.php).
Sie können die Daten auch explizit über den Parameter with übergeben. In diesem Fall sollten die Eigenschaften protected oder private sein.

E-Mails versenden

Geben Sie den Empfänger mit der to()-Methode der Mail-Fassade an und versenden Sie die Mail mit send().
CC und BCC können ebenfalls angegeben werden.
Um über einen bestimmten Mailer zu versenden, verwenden Sie die Methode mailer().

E-Mail-Versand über Queues

Da der E-Mail-Versand die Antwortzeit beeinflusst, empfiehlt es sich, ihn über eine Queue im Hintergrund abzuwickeln.
Für die Nutzung von Queues muss die Queue-Konfiguration eingerichtet und ein Worker gestartet sein.
Auch ein verzögerter Versand ist möglich.
Wenn Sie in der Mailable-Klasse ShouldQueue implementieren, wird die Mail auch bei einem Aufruf von send() immer in die Queue eingereiht.

Queue-Verbindung und Queue-Name per PHP-Attribut angeben

Mit PHP-Attributen können Sie Queue-Verbindung und Queue-Name direkt an der Mailable-Klasse festlegen. Statt der Methoden-Kette on()->queue() konfigurieren Sie diese Werte deklarativ auf Klassenebene.
So machen Sie in der Klassendefinition deutlich, dass diese Mailable stets an die Queue emails auf der SQS-Verbindung übergeben wird.

Markdown-Mails erstellen

Mit Markdown-Mails können Sie die von Laravel bereitgestellten, schönen und responsiven HTML-Templates nutzen.

Markdown-Mailable erzeugen

Erzeugen Sie das Mailable mit der Option --markdown.
Verwenden Sie in der Methode content() den Parameter markdown.

Markdown-Templates schreiben

Verfassen Sie den E-Mail-Text mithilfe der von Laravel bereitgestellten Blade-Komponenten.
Die verfügbaren Komponenten sind:
Markdown-Mails erzeugen automatisch auch eine reine Textvariante. So können sie auch in E-Mail-Clients gelesen werden, die keine HTML-Mails unterstützen.

E-Mails in der Vorschau anzeigen

Wenn Sie in einer Route eine Mailable-Instanz zurückgeben, können Sie die Mail im Browser als Vorschau ansehen. Das ist während der Entwicklung sehr praktisch.

E-Mails in der lokalen Entwicklung

Damit in der Produktionsumgebung keine Mails versehentlich versendet werden, ist es hilfreich, für die lokale Entwicklung Tools wie Mailpit einzusetzen.
In Laragon oder Laravel Herd ist Mailpit standardmäßig enthalten.
Mit dem Treiber log wird der Inhalt der E-Mail in die Logdatei geschrieben. Wenn Sie nur den Versand prüfen möchten, ist dies die einfachste Variante.

Zusammenfassung

Zuletzt geändert am 13. Juli 2026