Fehler beim E-Mail-Versand beheben

  • 4.4
  • 4.9
  • 4.12

Hier findest du ein paar Tipps wie du Probleme beim E-Mailversand unter Contao 4 analysieren und beheben kannst.

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

Contao Manager: Anwendungs-Cache erneuern

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
  • 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.

Jetzt mehr über den Kurs erfahren!

Hat dir dieser Artikel gefallen?

Willst du in Zukunft keinen Artikel verpassen?
Dann trage hier deine E-Mailadresse ein und klicke auf "Abonnieren". Du erhältst regelmäßig aktuelle Infos über Contao und die Contao-Academy.

Wir geben deine Daten niemals an Dritte weiter. Du kannst deine E-Mail-Adresse jederzeit mit nur einem Mausklick aus unserem System löschen. Der Newsletter Versand sowie die individuelle Messung, Speicherung und Auswertung von Öffnungsraten und der Klickraten in Empfängerprofilen erfolgen durch KlickTipp. Ausführliche Hinweise erhältst du in unserer Datenschutzerklärung.

Über den Autor
Christian Feneberg (Gründer Fenepedia)

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.

Folge Christian jetzt auf Twitter, Xing und LinkedIn.

5 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

Christian Feneberg Antwort von Christian Feneberg

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?

Christian Feneberg Antwort von Christian Feneberg

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.

Einen Kommentar schreiben

Was ist die Summe aus 8 und 9?