WordPress E-Mails via SMTP senden

In einigen Konfigurationen entstehen Schwierigkeiten mit dem Versand von E-Mails. Diese können entweder erst gar nicht gesendet werden, fliegen nicht in deinem Postfach ein oder landen beispielsweise im Spam-Ordner. All diese Probleme haben unterschiedliche Ursachen, was das Eingrenzen nicht unbedingt erleichtert. Aber schauen wir uns die Probleme und mögliche Ursachen mal im Detail an und finden Lösungen dafür.

WordPress und die PHP-Mail-Funktion

WordPress sendet interne E-Mails über die PHP-Funktion: mail().[1]PHP-Manual: mail. Zugriff: 28.02.2023 Diese Funktionalität führt bei einigen Shared-Hosting-Providern zu Fehlern, da sie nicht korrekt konfiguriert oder aus Sicherheitsgründen deaktiviert wurde. Dadurch können E-Mails, wie beispielsweise Passwort-Zusendungen oder Benachrichtigungen über neue Kommentare auf dem Blog, nicht korrekt gesendet werden. Ebenfalls unangenehm ist es, wenn deine E-Mails als Spam eingestuft werden und den Posteingang deiner Empfänger gar nicht erst erreicht. Zwar gibt es Drittanbieter-Services wie Mandrill oder Sendgrid, jedoch sind diese kostenpflichtig und können je nach Anzahl der User oder Benutzerkonten teuer werden.

Doch keine Sorge, es gibt eine Lösung für das Problem. Es kann ein Service genutzt werden, für den ohnehin bereits gezahlt wird.

Mail kann nicht gesendet werden

Falls Mails erst gar nicht von deiner Seite gesendet werden können und z.B. das Kontaktformular einen Fehler ausspuckt, liegt die Ursache meist in der Konfiguration. Das Plugin Contact Form 7 beispielsweise schreibt dann Fehler wie „Beim Versuch, deine Mitteilung zu versenden, ist ein Fehler aufgetreten. Bitte versuche es später noch einmal.“ Das sagt leider nicht viel über die Ursache aus, aber immerhin wissen wir, dass bereits der Versand fehlschlägt. Solltest du also keine zusätzlichen Einstellungen wie das Hinterlegen von SMTP-Zugangsdaten getroffen haben, wird versucht, die Mail via PHP-Mailer zu senden. Dieses PHP-Skript veranlasst den Server, eine Mail zu senden. Ganz ohne Zugangsdaten oder bestehendes Mailkonto. In dieser vermeintlichen Einfachheit liegt gleichzeitig auch das Problem. Diese Zugangsdaten kannst du z.B. in einem SMPT-Mailer hinterlegen und dann werden diese genutzt, um deine Mails abzuschicken.

Typische WordPress-Mail-Probleme

  • deine E-Mails landen im Spam
  • dein Kontaktformular versendet keine E-Mails
  • du versendest zu viele E-Mails
  • deine E-Mails werden als Spoof-Mails (verdächtig) gekennzeichnet

Sobald du Schwierigkeiten mit deinen E-Mails auf der Website hast, ist die Antwort immer SMTP!

Nutze deine eigene E-Mail-Adresse

Bei allen Shared-Hosting-Paketen solltest du neben der eigenen Domain auch eine eigene E-Mail-Adresse erhalten. Diese solltest du schon aus Gründen der positiven Wiedererkennung verwenden, denn eine hallo@googlemail.com sieht nicht so ansprechend aus, wie ein hallo@deinwp.de. Erstelle daher bei deinem Provider eine eigene E-Mail-Adresse und speichere dir deine Zugangsdaten, samt SMTP-Informationen ab. Besonders der zu verwendende Port (Standard 587) und Server ist dabei von Interesse.

SMTP-Einstellungen mittels Funktion

Das folgende Script konfiguriert die SMTP-Einstellungen für das Versenden von E-Mails über dein WordPress. Hier wird ebenfalls die PHPMailer-Bibliothek verwendet, allerdings um den Transport mittels SMTP erweitert. Mit der Funktion "dwp_send_smtp" wird in unserem Beispiel der "phpmailer_init"-Hook aufgerufen, welcher beim Initialisieren des PHPMailer-Objekts ausgeführt wird. Die SMTP-Einstellungen werden dann mit den angegebenen Werten konfiguriert, wie z.B. Host, Port, Benutzername, Passwort, Absenderadresse und Absendername. Diese musst du vorher in die Felder eintragen. Die gesamte Funktion muss dann in die functions.php (deines Child-Themes) eingefügt werden.

/* SMTP-Einstellung für das Senden von E-Mails */
function dwp_send_smtp( $phpmailer ) {
    $phpmailer->isSMTP();
    $phpmailer->Host       = 'Host';
    $phpmailer->SMTPAuth   = true;
    $phpmailer->Port       = 'Port';
    $phpmailer->Username   = 'User';
    $phpmailer->Password   = 'Pass';
    $phpmailer->SMTPSecure = 'ssl/tls';
    $phpmailer->From       = 'From';
    $phpmailer->FromName   = 'Name';
}
add_action( 'phpmailer_init', 'dwp_send_smtp' );

Mit diesem Script stellst du sicher, dass alle deine E-Mails erfolgreich versendet werden. Also, keine Sorge mehr über nicht zugestellte E-Mails oder verpasste Benachrichtigungen von deiner Website!

Bitte beachte aus Sicherheitsgründen noch folgendes. Wenn du die Zugangsdaten auf deinem Server, also in der functions.php ablegst, liegen diese dort unverschlüsselt. Das bedeutet, dass jeder, der auf diese Datei Zugriff hat, auch die Zugangsdaten fürs das Mailing der hinterlegten Adresse hat. Auch der Theme-Datei-Editor ermöglicht es Administratoren deiner Seite Einblick zu gewähren. Sollte dir das also zu riskant sein, erwäge ggf. die folgende Pluginlösung und prüfe, wer auf dir hinterlegten Daten zugreifen kann.

Plugin-Lösung

Wenn du im Bereich Plugins nach „SMTP Mail“ suchst, wirst du einige Plugins entdecken, die einen ähnlichen Funktionsumfang bieten. Die genaue Wahl bleibt letztendlich dir überlassen, denn meist entscheidet sich jeder Ratgeber zum Thema für ein anderes. Die Funktionalität dürfte allerdings zumeist identisch sein.

Die Standardfunktion „mail()“ wird mit „wp_mail()“ ersetzt und du kannst deine SMTP-Daten hinterlegen. Hierzu bietet die „WP Mail SMTP“ beispielsweise die Auswahl aus mehreren Versandanbietern. Nutzt du einen von den aufgezeigten, musst du nur noch deine entsprechenden Daten hinterlegen und ab sofort, sollte es keine Schwierigkeiten mehr geben, deinen Nachrichten per Mail zu senden.

Deine WordPress E-Mails via SMTP senden

Ohne zusätzliche Kosten versendet dein WordPress nun E-Mails zuverlässig. Und deine Absenderadresse besitzt zu jeder Zeit den Namen deiner Domain. Sollte das versenden deiner Mails weiterhin nicht klappen, lass es uns in den Kommentaren wissen.

Quellen und Fußnoten[+]

Erkunde weitere Beiträge

2 Gedanken zu „WordPress E-Mails via SMTP senden“

  1. Hallo,
    WordPress und smtp mit eigener Adresse klappt zwar überwiegend zuverlässig, aber nur Gmail verschiebt E-Mails, die über Contact Form 7 automatisiert eingehen, in den Spam-Ordner. Müssen für Google zusätzlich DNS-Einträge wie SPF hinterlegt werden und wenn ja welche?

    Viele Grüße
    Miguel

    Antworten
    • Hallo Miguel.
      Da das eigentliche Absenden nichts mit dem Empfangen zu tun hat, bist du bereits richtig, wenn du dir die SPF-Einstellungen näher anschaust. Google und auch andere Mailprovider sind jüngst dazu übergegangen Mails, welche keine (oder unzureichend) autorisierte Absender enthalten einfach in den Spam zu verschieben. Hier kommt es nun darauf an, bei welchem Anbieter deine Mails versendet werden. Solltest du nun also beispielsweise deine Domain und WordPress-Seite bei IONOS gehostet haben, müsstest du folgendes in deinen DNS-Einstellungen hinterlegen: v=spf1 include:_spf-eu.ionos.com ~all
      Je nach Hoster unterscheiden sich die Einträge natürlich und du müsstest schauen, was für dich zutrifft.

      Schau gerne mal ob du damit weiterkommst. Alternativ melde dich gerne nochmal mit dem Namen deines Mail- bzw. Hostinganbieters zurück und wir schauen, ob wir dafür eine Lösung finden. Solltest du dich dafür interessieren, wie der SPF-Eintrag selbst aufgebaut ist, schau gerne mal hier.

      Viele Grüße
      Maik

      Antworten

Schreibe einen Kommentar