Fehler beim E-Mail-Versand beheben

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 …

Warum den Mailversand auf SMTP umstellen?

Sollen über einen Webserver Daten per Mail verschickt werden, muss das Zusammenspiel mit dem Webserver berücksichtigt werden.

Die Provider tragen dem erhöhten Spam-Aufkommen Rechnung und ergreifen Maßnahmen, um das Versenden von Spam-Mails zu verhindern bzw. mindestens zu erschweren. Dazu gehört unter anderem, dass beim Versenden von Mails eine Authentifizierung verlangt wird.

Deshalb ist der standardmäßige Versand mit der PHP mail() Funktion bei vielen Providern nicht mehr möglich. Eine Alternative ist der Mailversand per SMTP wobei ein echtes Postfach für den Versand der Mails verwendet wird.

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 Änderungen aktiv werden, musst du per Contao Manager oder contao-console den Anwendungs-Cache erneuern.

Mailversand auf Kommandozeile testen

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
  • PHP-Option: proc_open aktiviert
  • Anwendungscache nach Änderungen erneuert
    (Contao Manager > Systemwartung > Prod.-Cache erneuern)

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!

Tutorial getestet mit Contao:
  • 4.4
  • 4.9
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-Mailadresse jederzeit mit nur 1 Klick wieder aus unserem System löschen. Datenschutzhinweis

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

Christian Feneberg ist der Gründer der Contao-Academy und nutzt seit 2010 Contao. Neben Contao begeistert er sich für Online-Marketing, Unternehmertum und Persönlichkeitsentwicklung.

Folge Christian jetzt auf Twitter, Facebook, Instagram und Xing.

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

Einen Kommentar schreiben

Bitte addieren Sie 1 und 6.