Fehler beim E-Mail-Versand beheben
- 4.4
- 4.9
- 4.13
- 5.x
Häufigstes Problem – Fehlende SMTP-Konfiguration
Wenn keine Mails versendet werden, dann liegt es meist daran, dass keine SMTP-Konfiguration eingerichtet wurde.
Du findest dann z. B. eine Fehlermeldung wie diese in den Logfiles (/var/logs)
request.CRITICAL: Uncaught PHP Exception Swift_TransportException: "Expected response code 220 but got an empty response …
Der technische Hintergrund
Vor einiger Zeit hat Swiftmailer die Unterstützung für die PHP-Mail-Funktion aus Sicherheitsgründen eingestellt und zwingt Anwender damit, zwischen den Konfigurationen sendmail und smtp zu wählen. Details siehe auch: https://github.com/contao/contao/pull/2236.
Ohne Angaben eines SMTP-Servers werden die Daten per Default über das Programm sendmail versendet. Dabei ruft Swiftmailer sendmail mit anderen Optionen auf als es die PHP-Mail-Funktion standardmäßig tut. Das führt bei einigen Hostern zu Problemen. Inzwischen wurde das Symfony-Swiftmailer-Bundle Dank einem Pull request von Fritz so angepasst, dass die gleichen Optionen verwendet werden wie mit PHP-Mail. Das Patch löst also das anfangs beschriebene Problem bei den meisten Hostern.
Dennoch kann es weitere Schwierigkeiten geben: Ohne SMTP werden die Mails nicht von einem autorisierten Postfach aus verschickt. Solche Mails werden häufiger als nicht vertrauenswürdig eingestuft und erreichen den Empfänger entweder gar nicht oder landen im Spam-Ordner.
Ich empfehle deswegen den Mailversand immer auf SMTP umzustellen. Wie das funktioniert, erkläre ich dir hier.
SMTP Mailversand unter Contao 4 einrichten
In Contao 4 wird der Mailversand über SMTP durch die Anpassung der parameters.yml konfiguriert. Die parameters.yml findest du im Ordner /config (ab Contao 4.8) bzw. im Ordner /app/config (bis Contao 4.7).
Diese Datei wurde bei der Installation von Contao erstellt und enthält bereits die Konfiguration der Datenbank.
Parameters.yml nach einer Installation von Contao 4
# This file has been auto-generated during installation
parameters:
database_host: HOSTNAME
database_port: PORT
database_user: DBUSER
database_password: DBPASSWORT
database_name: DBNAME
secret: DEINSECRET
Zugangsdaten für Mailserver / E-Mail-Postfach
Für den Mailversand über SMTP benötigst du eine gültige Mailadresse, die dem Mailserver bekannt ist. In der Regel sind das alle E-Mail-Adressen, welche bei deinem Provider zu der entsprechenden Domain registriert sind.
Alternativ kannst du auch ein neues E-Mail-Postfach bei deinem Hoster anlegen.
Für deine Mailadresse hast du von deinem Provider u. a. folgende Daten bekommen oder kannst diese erfragen:
- Hostnamen des SMTP-Servers
- Benutzernamen für deine Mailadresse
häufig die Mailadresse selbst - Passwort für deine Mailadresse
- Portnummer des SMTP-Servers
für verschlüsselten E-Mailversand in der Regel Port 587 oder 465 - Verschlüsselungsmethode für den SMTP-Server
möglich sind die Werte tls oder ssl
Diese Daten müssen in die parameters.yml eingetragen werden.
Konfigurationsdatei ergänzen
Zum Bearbeiten der Datei benötigt du FTP-Zugriff und einen geeigneten Editor (z. B. notepad++, atom.io, PhpStorm, BBEdit, Visual Studio Code, …)
Nun ergänzt du die bestehende Datei. Ersetze dabei die Beispieldaten durch deine eigenen Daten.
parameters:
#Folgende Parameter nach secret hinzufügen
mailer_transport: smtp
mailer_host: host.example.com
mailer_user: mail@example.com
mailer_password: 'dein-passwort'
mailer_port: 465
mailer_encryption: ssl
Wichtiger Hinweis:
In der parameters.yml dürfen keine Tabulatoren für Einrückungen verwendet werden, sondern alle Einrückungen müssen Leerzeichen sein, so wie im Beispiel dargestellt.
Anwendungs-Cache leeren

Damit die neue Konfiguration in Contao aktiv wird, musst du jetzt per Contao Manager den Anwendungs-Cache neu aufbauen. (Systemwartung > Prod.-Cache erneuern)
Mailversand auf Kommandozeile testen
# Hinweis: Dieses Kommando steht ab Contao 4.10 nicht mehr zur Verfügung.
vendor/bin/contao-console swiftmailer:email:send --from=absender@example.com --to=empfaenger@example.com --subject=testmail --body=testmail
Weitere Fehleranalyse
Sollte die Umstellung auf SMTP dein Problem nicht gelöst haben, hier noch ein paar weitere Tipps zur Fehlerbehebung!
- System-Log im Backend auf Fehlermeldung prüfen
- Logfiles /var/log/ auf Fehlermeldungen (ERROR, CRITICAL) prüfen
- Absender-Adresse passend zur verwendeten Domain (E-mail address rejected…)
- E-Mail-Adresse des Webseiten-Administrators beim Startpunkt der Website hinterlegt
- Zugangsdaten zum Postfach korrekt eingegeben
- Ports und Verschlüsselungsmethode korrekt
- Passwort enthält problematische Sonderzeichen # : ;
- PHP-Option: proc_open aktiviert
- Office 365: Hinweis zur Konfiguration von Office365
- Anwendungscache nach Änderungen erneuert
(Contao Manager > Systemwartung > Prod.-Cache erneuern)
Inzwischen gibt es dazu auch eine Anleitung in der offiziellen Contao Doku.
Empfehlung: Umfangreicher Videokurs zu Formularen
Du möchtest diese Anleitung als Video sehen? Dann empfehle ich dir unseren Kurs für Formulare.
In diesem Kurs erhältst du aktuelle Praxisanleitungen zum Umgang mit Formularen. Außerdem erfährst du Schritt für Schritt, wie du die beliebte Erweiterung Notification Center konfigurieren und nutzen kannst. Dazu lernst du die Erweiterung Leads und viele andere hilfreiche Extensions im Zusammenhang mit Formularen kennen.
Über den Autor

Christian Feneberg ist der Gründer der Contao-Academy und erstellt seit 2010 Websites mit Contao. Außerdem ist er im Team von trakked.io. und regelmäßig auf YouTube in der Contao Show zu sehen. Neben Contao begeistert er sich für Online-Marketing, Unternehmertum und Persönlichkeitsentwicklung.
6 Kommentare
Jörg |
Hallo Christian,
verstehe ich das richtig, dass hier das Email PW "mailer_password: 'dein-passwort'"
vom Mail Account eingetragen werden muss?
Wie soll das bei Kundenprojekt funktionieren - soll der Kunde mir sein Email PW sagen?
Oder habe ich das etwas falsch verstanden?, Danke
Gruß, Jörg
Hallo Jörg,
ich empfehle hier immer ein zusätzliches Postfach anzulegen. Dieses wird nur zum Mailversand verwendet.
Das Passwort des Kunden wäre denkbar, allerdings ist das eine schlechte Lösung.
Einerseits wegen dem Datenschutz, zum anderen könnte der Kunde das Passwort ja ändern.
Martin |
Vielen Dank für diese Info! Das hat mir sehr geholfen! Viele Grüße Martin.
Frank |
Ich bekomme keinen Mailversand per SSL oder TLS hin. Normal auf Port 25 geht es. Wo kann ich da noch suchen?
Hallo Frank,
bei welchem Hoster ist das? Hast du die Konfiguration schon mal in einem Mailprogramm getestet. Sind die Daten alle korrekt?
Frank |
Alles frisch angelegt. Auf Port 25 geht es ja unverschlüsselt. Domain liegt bei Hosteurope
Antwort von Maren Lange
Portnummer und Verschlüsselungmethode sollte Dir Dein Hoster geben können. Nach jeder Anpassung in der parameters.yml nicht vergessen den Symfony-Cache zu löschen. Außerdem darauf achten, dass die Mailadresse zur versendenden Domain passt.
Michael Gasperl |
Hi,
ab Version 4.10 kann man mehrere SMTP-Mailer konfigurieren, in der config.yml. Ersetzt das die obige Konfiguration in der parameters.yml oder wie handhabt man das jetzt?
Danke & liebe Grüße, Michael
Antwort von Maren Lange
Hallo Michael,
wenn Du verschiedene E-Mailadressen und Absenderadressen nutzen willst, musst Du das wie in der Doku beschrieben konfigurieren. Wird alles einschließlich Transports so konfiguriert, wie in der Doku beschrieben, werden die Angaben in der parameters.yml nicht mehr berücksichtigt.
Gert |
Danke für die Anleitung. Reicht es, nach dieser Anleitung alles einzurichten (parameters.yml und Cache erneuern), oder muss irgendwo noch explizit auf das SMTP-Verfahren umgestellt werden? Laut Dokumentation müsste unter "Einstellungen" der Punkt "E-Mail Versand Konfiguration" stehen. Der ist bei meiner 4.13 aber nicht vorhanden.
Danke im Voraus für Eure Hilfe.
Hallo Gert,
es reicht, wenn du diese Einstellungen in der parameters.yml vornimmst.
Vermutlich meinst du die Mailer-Transport-Konfiguration. Damit kannst du mehrere SMTP-Konfigurationen hinterlegen und auswählen.
Einen Kommentar schreiben