2mail — SMTP-Relay aus belgischer Infrastruktur

SMTP für Laravel — die Post Ihrer Anwendung, die ankommt

Laravel bringt eine vollständige Mail-Schicht mit, mit Warteschlangen, Vorlagen und Benachrichtigungen. Was es nicht liefert, ist die Zustellbarkeit: Die hängt vom Server ab, über den Sie senden, und die Standardkonfiguration eines neuen Servers ist selten ein guter Absender.

Laravel liest seine Mail-Einstellungen aus der Umgebungskonfiguration. Dort ändern Sie die SMTP-Daten, und der Rest Ihrer Anwendung bleibt unverändert — keine Anpassung an Mailables, Notifications oder Warteschlangen nötig.

Warum es ohne Relay schiefgeht

Eine Anwendung in der Entwicklung sendet an eine Testadresse und alles scheint in Ordnung. Beim Go-live ändert sich das Publikum: echte Adressen bei echten Anbietern, die Authentifizierung und Reputation sehr wohl prüfen. Das ist der Moment, in dem die E-Mails zum Zurücksetzen plötzlich nicht mehr ankommen — nur bei einem Teil der Benutzer, was das Problem schwer zu erkennen macht.

SMTP in Laravel einrichten

1

Zugangsdaten abrufen

Melden Sie sich in Ihrem 2mail-Konto an und rufen Sie dort Ihren SMTP-Server, Benutzernamen und Ihr Passwort ab.

2

In Laravel eintragen

Die Mail-Einstellungen liegen in der Umgebungsdatei Ihrer Anwendung, nicht im Code. Sie stellen den Mailer auf SMTP und tragen die fünf Daten unten ein. Vergessen Sie Adresse und Name des Absenders nicht: Das sind eigene Einstellungen, neben den Verbindungsdaten.

3

Domain authentifizieren

Sorgen Sie dafür, dass SPF, DKIM und DMARC für Ihre Domain korrekt gesetzt sind, damit Empfänger verifizieren können, dass die Mail von Ihnen stammt.

4

Testen

Senden Sie von Ihrer Plattform aus eine Testnachricht an eine Adresse bei einem großen Provider und prüfen Sie, ob sie im Posteingang ankommt und nicht im Spam-Ordner.

Die Felder, die Laravel abfragt

Jede Plattform nennt sie etwas anders, aber es geht immer um dieselben fünf. Die konkreten Werte sind kontogebunden und finden Sie in Ihrem 2mail-Konto — rufen Sie sie dort ab, damit Sie sicher die richtigen verwenden.

Feld Was Sie eintragen
SMTP-Server (Host)Der Servername aus Ihrem 2mail-Konto.
PortDer Port, der zu Ihrer gewählten Verschlüsselung gehört; Ihr Konto zeigt, welcher.
VerschlüsselungTLS. Senden Sie nie unverschlüsselt — sonst gehen Ihre Zugangsdaten lesbar über die Leitung.
BenutzernameDer SMTP-Login Ihres 2mail-Kontos.
PasswortDas zugehörige Passwort. Verwenden Sie nie das Passwort eines Mitarbeiterpostfachs.

SMTP-Konfiguration für Laravel im Code

Funktionierende Beispiele für Port 587 mit STARTTLS, direkt zum Übernehmen. Ersetzen Sie die Absenderadresse durch eine Adresse auf Ihrer eigenen Domain und prüfen Sie Servername und Login in Ihrem 2mail-Konto. Das Passwort gehört in eine Umgebungsvariable — nie in den Code und nie in die Versionsverwaltung.

Die .env-Datei: die MAIL_*-Variablen

Laravel liest alle Verbindungsdaten aus .env. Port 587 arbeitet mit STARTTLS: Die Verbindung beginnt unverschlüsselt und wird auf TLS hochgestuft, noch bevor Ihre Zugangsdaten über die Leitung gehen. Das Passwort steht ausschließlich in der .env-Datei auf dem Server — diese Datei gehört nicht in die Versionsverwaltung. Ersetzen Sie example.com durch eine Domain, die Sie in 2mail authentifiziert haben.

MAIL_MAILER=smtp
MAIL_HOST=relay.2mail.eu
MAIL_PORT=587
MAIL_USERNAME="<2mail-smtp-login>"
MAIL_PASSWORD="<2mail-smtp-password>"
MAIL_FROM_ADDRESS="noreply@example.com"
MAIL_FROM_NAME="${APP_NAME}"

# Only when config/mail.php still has an 'encryption' key (older projects):
MAIL_ENCRYPTION=tls

# When config/mail.php has a 'scheme' key instead: leave MAIL_SCHEME unset.
# "smtp" on port 587 upgrades to STARTTLS by itself; "tls" is not a valid scheme.

config/mail.php: der smtp-Mailer

In einem Standardprojekt müssen Sie hier nichts ändern: Die Datei liest einfach die Variablen aus .env. Sehen Sie aber nach, wenn eine Einstellung wirkungslos bleibt — ein fest eingetragener Host in dieser Datei hat immer Vorrang vor Ihrer .env. Neuere Projekte haben einen Schlüssel scheme, ältere einen Schlüssel encryption; der Rest ist identisch.

// config/mail.php
'default' => env('MAIL_MAILER', 'smtp'),

'mailers' => [
    'smtp' => [
        'transport' => 'smtp',
        'scheme' => env('MAIL_SCHEME'),                    // newer projects
        // 'encryption' => env('MAIL_ENCRYPTION', 'tls'),  // older projects use this key instead
        'host' => env('MAIL_HOST', 'relay.2mail.eu'),
        'port' => env('MAIL_PORT', 587),
        'username' => env('MAIL_USERNAME'),
        'password' => env('MAIL_PASSWORD'),
        'timeout' => null,
    ],
],

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'noreply@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
],

Test-E-Mail mit Tinker senden

Leeren Sie zuerst den Konfigurations-Cache, sonst testen Sie noch die alten Einstellungen. Mail::raw sendet synchron: Einen Fehler bei Host, Port oder Zugangsdaten sehen Sie sofort im Terminal und nicht erst im Log der Warteschlange. Senden Sie an eine externe Adresse bei einem großen Anbieter.

php artisan config:clear
php artisan tinker

# At the tinker prompt:
Mail::raw('Sent through the 2mail SMTP relay.', fn ($m) => $m->to('you@example.org')->subject('SMTP test'));

Welche Mails Laravel sendet

Sobald das Relay eingerichtet ist, laufen diese alle über 2mail — Sie müssen sie nicht einzeln konfigurieren.

Passwort-Zurücksetzen und Adressverifizierung
Benachrichtigungen und Ereignis-E-Mails der Anwendung
Rechnungen und Nachrichten zu Abonnements
Berichte aus geplanten Aufgaben
Fehlermeldungen an die Administratoren

Stolperfallen bei Laravel

Die Warteschlange muss laufen

Wenn Sie Post in die Warteschlange stellen, ohne dass ein Worker aktiv ist, geht nichts ab und Sie sehen keinen Fehler. Bei Zustellproblemen sollte das die erste Prüfung sein, nicht die letzte.

Der Konfigurations-Cache nach einer Änderung

Wenn Ihre Anwendung mit gecachter Konfiguration läuft, bleiben geänderte Mail-Einstellungen wirkungslos, bis dieser Cache erneuert wird. Eine Einstellung, die „nicht funktioniert“, ist oft schlicht noch nicht neu eingelesen.

Testumgebungen, die wirklich versenden

Eine Staging-Umgebung mit einer Kopie der Produktionsdatenbank kann unbemerkt an echte Kunden senden. Beschränken Sie dort die Empfänger ausdrücklich, oder verwenden Sie eigene Zugangsdaten.

Häufige Fehlermeldungen bei Laravel

Die Meldungen, die Sie sehen, wenn Host, Port, Verschlüsselung oder Login nicht stimmen — im Wortlaut, damit Sie sie in Ihrem Log wiedererkennen, mit Ursache und Lösung daneben.

Meldung Ursache Lösung
Connection could not be established with host "relay.2mail.eu:587": stream_socket_client(): Unable to connect to relay.2mail.eu:587 (Connection timed out) Ihr Server erreicht das Relay nicht. Meist blockiert die Firewall Ihres Hosters ausgehenden Verkehr auf Port 587, oder in MAIL_HOST oder MAIL_PORT steckt ein Tippfehler. Testen Sie vom selben Server aus mit openssl s_client -starttls smtp -connect relay.2mail.eu:587. Kommt keine Antwort, lassen Sie Ihren Hoster ausgehenden Verkehr auf Port 587 freigeben.
Connection could not be established with host "ssl://relay.2mail.eu:587": stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:…:SSL routines::wrong version number Das Scheme steht auf smtps (oder in einem älteren Projekt MAIL_ENCRYPTION=ssl). Laravel erwartet dann TLS ab dem ersten Byte, während Port 587 unverschlüsselt beginnt und erst danach über STARTTLS hochstuft. Lassen Sie MAIL_SCHEME leer oder setzen Sie es auf smtp; in einem älteren Projekt setzen Sie MAIL_ENCRYPTION=tls. Der Port bleibt 587.
Failed to authenticate on SMTP server with username "…" using the following authenticators: "LOGIN", "PLAIN". … Expected response code "235" but got code "535" Das Relay lehnt die Anmeldung ab: ein falscher Benutzername oder ein falsches Passwort, ein Passwort mit Leerzeichen oder #, das in .env nicht in Anführungszeichen steht, oder eine alte Konfiguration im Cache. Setzen Sie den Wert in doppelte Anführungszeichen, führen Sie php artisan config:clear aus und verwenden Sie den SMTP-Login aus Ihrem 2mail-Konto — nicht das Passwort eines Postfachs.
The "tls" scheme is not supported; supported schemes for mailer "smtp" are: "smtp", "smtps". In MAIL_SCHEME steht tls. Diese Variable ist kein Nachfolger von MAIL_ENCRYPTION: Sie kennt nur smtp und smtps. Entfernen Sie MAIL_SCHEME oder setzen Sie es auf smtp. Auf Port 587 wechselt der Mailer von selbst zu STARTTLS.
Expected response code "250/251/252" but got code "554", with message "554 5.7.1 <noreply@example.com>: Sender address rejected" Die Anmeldung stimmt, aber die Absenderadresse liegt auf einer Domain, die nicht mit Ihrem 2mail-Konto verknüpft ist. Oft enthält MAIL_FROM_ADDRESS noch den Standardwert aus der Beispieldatei. Setzen Sie MAIL_FROM_ADDRESS auf eine Adresse einer Domain, die Sie in 2mail hinzugefügt haben, und prüfen Sie, dass kein Mailable ein eigenes from() auf einer anderen Domain setzt.
SPF, DKIM & DMARC erklärt Über Zustellbarkeit

Andere Plattform?

SMTP ist ein Standardprotokoll: Jedes System, das SMTP spricht — ein CRM, ein ERP, eine eigene Anwendung oder ein Server —, kann über 2mail mit denselben fünf Feldern senden.

Häufige Fragen zu SMTP für Laravel

Laravel liefert die Mail-Schicht, nicht die Zustellbarkeit: Die hängt vom Server ab, über den Sie senden. Die Standardkonfiguration eines frischen Servers ist selten ein guter Absender, weil Authentifizierung und etablierte Reputation fehlen.
In der Umgebungsdatei Ihrer Anwendung, nicht im Code. Sie setzen den Mailer auf SMTP und tragen Host, Port, Benutzername, Passwort und Verschlüsselung ein. Vergessen Sie Absenderadresse und -name nicht — das sind separate Einstellungen daneben.
Wenn Ihre Anwendung mit gecachter Konfiguration läuft, bleiben geänderte Mail-Einstellungen wirkungslos, bis dieser Cache erneuert wird. Eine Einstellung, die „nicht funktioniert“, ist oft schlicht noch nicht neu eingelesen.
Prüfen Sie, ob die Queue tatsächlich abgearbeitet wird. Wenn Sie E-Mails in die Queue legen, ohne dass ein Worker läuft, geht nichts raus und es erscheint keine Fehlermeldung. Das sollte die erste Prüfung sein, nicht die letzte.
Eine Staging-Umgebung mit einer Kopie der Produktionsdatenbank kann unbemerkt an echte Adressen senden. Beschränken Sie dort die Empfänger ausdrücklich, oder verwenden Sie eigene Zugangsdaten, um diesen Verkehr getrennt zu verfolgen.
Jetzt anrufen
E-Mail senden