Email

Wie man den E-Mail-Versand von WordPress-Websites verbessert

Gibt es einen besseren Weg, E-Mails über WordPress zu versenden? Erfahren Sie, warum die Standardmethode zu Problemen mit der Zustellbarkeit und den Servern führen kann. Erhalten Sie zudem Einblicke, wie Sie eine praktikable Open-Source-Alternative nutzen.
Bild für Wie man den E-Mail-Versand von WordPress-Websites verbessert

Wenn Sie die Standard-PHP-Funktion mail() für den E-Mail-Versand über WordPress nutzen, treten möglicherweise Probleme mit der Zustellbarkeit oder den Servern auf, insbesondere bei einem hohen Versandvolumen. Zum Glück gibt es eine zuverlässigere Methode. Mit den richtigen Lösungen setzen Sie stattdessen SMTP-Server (Simple Mail Transfer Protocol) ein.

Für die gesamte E-Mail-Kommunikation verfügt WordPress über die spezielle Funktion wp_mail(), die in einer Standardumgebung die phpMailer -Open-Source-Bibliothek nutzt, um die E-Mail zu erstellen, die entsprechenden Kopfzeilen festzulegen, HTML- und Klartextversionen zu verarbeiten und die E-Mail anschließend zur Zustellung in die Warteschlange einzureihen. Im Hintergrund verwendet phpMailer standardmäßig die integrierte PHP-Funktion namens mail().

Auf den meisten Systemen ruft die mail()-Funktion von PHP einfach die ausführbare Datei auf, die in der Konfigurationsdirektive sendmail_path festgelegt ist. Dieses Programm liest die Standardeingabe für die Kopfzeilen, den E-Mail-Text, die Anhänge usw. aus und führt verschiedene Prüfungen durch. Beispielsweise wird geprüft, ob die Empfängeradresse gültig ist.

Wenn alles in Ordnung ist, sendet dieses Programm die E-Mail je nach Systemkonfiguration in der Regel über einen lokalen SMTP-Server oder reiht sie in eine Warteschlange ein, um sie später von diesem verarbeiten zu lassen.

Leider ist diese Methode weder für die E-Mail-Zustellbarkeit noch für den Massenversand optimal.

Das Problem beim E-Mail-Versand mit WordPress

WordPress-logotype-standard

Das Einreihen der E-Mail für den lokalen SMTP-Server in die Warteschlange ist recht effizient, da die PHP-Funktion mail() sofort zurückkehrt, ohne warten zu müssen, bis die Nachricht tatsächlich gesendet wurde. 

Der lokale SMTP-Server selbst kann jedoch schnell zu einem Engpass werden. Das liegt daran, dass er möglicherweise mit Hunderten von externen Mail Transfer Agents (MTAs) kommunizieren, jede E-Mail nachverfolgen und bei Fehlschlägen erneute Sendeversuche unternehmen muss usw. Dies kann für einen Server, der nicht als E-Mail-Server konzipiert wurde, eine Menge Arbeit bedeuten.

Und das ist nur ein Teil des Problems. Das zweite und größere Problem ist die Zustellbarkeit. Sie werden feststellen, dass ein großer Teil der direkt von Webservern gesendeten E-Mails häufig im Spam-Ordner landet. Der Grund hierfür ist eine falsche oder unvollständige Konfiguration der E-Mail-Authentifizierungsprotokolle (SPF, DKIM usw.), deren Einrichtung kompliziert sein kann. Auch die Reputation der IP-Adresse des Webservers spielt eine wichtige Rolle bei der Zustellbarkeit.

In Shared-Hosting-Umgebungen ist es sogar noch komplizierter, da (meistens) nur ein einziger SMTP-Server, aber mehrere Domains, „Absender“-Adressen und Signaturen vorhanden sind. Es ist äußerst schwierig, dies korrekt einzurichten, und noch schwieriger, alles sauber zu halten und Missbrauch zu verhindern.

Aus diesem Grund begrenzen die meisten Hosting-Anbieter, insbesondere bei Managed-WordPress-Hosting-Diensten, die Senderate und filtern alle ausgehenden E-Mails. Das ist wenig zielführend, besonders im E-Commerce, wo E-Mails häufiger versendet werden und entscheidend für den Erfolg sind: abgebrochene Einkäufe, Merklisten, Sonderangebote usw.

Die Mehrheit der Hosting-Plattformen empfiehlt die Nutzung eines externen Dienstes für Transaktions-E-Mails wie Mailgun, um all diese Probleme zu beheben.

Die Vorteile eines Transaktions-E-Mail-Services

Mailgun und andere Dienste für Transaktions-E-Mails sorgen dafür, dass E-Mails so schnell und effizient wie möglich zugestellt werden. Sie richten die entsprechenden E-Mail-Kopfzeilen, Signaturen usw. ein und beraten Sie bei der Einrichtung korrekter DNS-Einträge für Ihre Domains, was die Wahrscheinlichkeit erhöht, dass Ihre Nachrichten zuverlässig im Posteingang landen.

Mailgun bietet zudem zahlreiche zusätzliche Funktionen wie E-Mail-Validierungen, Reputationsprüfungen, Protokollierung, Analysen, A/B-Tests und mehr.

Alles, was den Website-Betreibern noch bleibt, ist, die Nachricht aus ihrer WordPress-Anwendung in die Warteschlange von Mailgun zu übertragen. Dafür gibt es mehrere Möglichkeiten.

Mailgun via SMTP mit WordPress-Filtern einrichten

blog_post_default_image

Die meisten, die mit WordPress entwickeln, kennen das Konzept von Aktionen und Filtern. Die Erstellung eines kleinen, benutzerdefinierten Must-use-Plugins ist der schlankste und schnellste Weg, um Mailgun in Betrieb zu nehmen:

                                

                                    add_action( 'phpmailer_init', function( $m ) {rnrnt$m->Host = 'smtp.mailgun.org';rnrnt$m->Port = 587;rnrnt$m->Username = 'postmaster@yourdomain.org';rnrnt$m->Password = 'your secret password';rnrnt$m->isSMTP();rnrnt$m->SMTPAuth = true;rnrnt$m->SMTPSecure = 'tls';rnrn} );rn
                                
                            

Dadurch wird eine Funktion erstellt, die an die Aktion phpmailer_init in WordPress gekoppelt ist. Sie konfiguriert die phpMailer-Bibliothek so, dass sie E-Mails über einen externen SMTP-Server sendet. Rufen Sie den Benutzernamen und das Passwort in Ihrem Mailgun-Dashboard ab oder setzen Sie sie zurück.

Sobald dieses Code-Snippet aktiv ist, verhindert es, dass phpMailer die PHP-Funktion mail() nutzt, und leitet stattdessen alle ausgehenden E-Mails an die SMTP-Server von Mailgun weiter. Überprüfen Sie dies, indem Sie sich beispielsweise selbst eine E-Mail zur Passwortwiederherstellung senden und den Bereich Protokolle in Ihrem Mailgun-Dashboard beobachten.

mailgun-dashboard-screenshot

Ein SMTP-WordPress-Plugin nutzen

Ein eigenes kleines Plugin zu schreiben, ist nicht immer die optimale Wahl, insbesondere für Personen, die mit der Programmiersprache PHP oder der Funktionsweise von WordPress-Aktionen und -Filtern nicht vertraut sind. Die alternative Vorgehensweise ist die Nutzung eines fertigen Plugins.

                                

                                    rnadd_action( 'phpmailer_init', function( $m ) {rnrnt$m->Host = 'smtp.mailgun.org';rnrnt$m->Port = 587;rnrnt$m->Username = 'postmaster@yourdomain.org';rnrnt$m->Password = 'your secret password';rnrnt$m->isSMTP();rnrnt$m->SMTPAuth = true;rnrnt$m->SMTPSecure = 'tls';rnrn} );rn
                                
                            

Das Plugin von Mailgun ist eine hervorragende Option, die neben dem Versand über SMTP auch ausgehende Nachrichten über die HTTP-API von Mailgun sendet. Dies ist besonders in Shared-Hosting-Umgebungen von Vorteil, in denen jegliche ausgehende SMTP-Kommunikation schlichtweg blockiert wird, um Missbrauch vorzubeugen.

Die API-Zugangsdaten finden Sie ebenfalls in Ihrem Mailgun-Dashboard.

Es gibt auch weitere SMTP-Plugin-Optionen , die sich als nützlich erweisen können, wenn Sie über einen anderen externen SMTP-Server als Mailgun senden möchten.

Überlegungen zur Leistung und Alternativen

Wenn Sie diese Plugins oder Snippets nutzen, damit WordPress E-Mails an einen externen SMTP-Service weiterleitet, sollten Sie bedenken, dass Sie dabei Kompromisse bei der Anwendungsleistung eingehen.

Anstatt einfach Text an die lokale ausführbare sendmail-Datei des Systems zu übergeben, zwingen diese Plugins WordPress dazu, weit mehr Arbeit zu verrichten. Dazu gehören das Öffnen einer neuen Verbindung, die Durchführung eines TLS-Handshakes und die Authentifizierung über SMTP bei einem externen Dienst. Für ein hohes Versandvolumen ist dies allein aufgrund des Latenzfaktors unter Umständen gar keine Option.

Eine sehr detaillierte Beschreibung dieser Leistungsprobleme finden Sie im Artikel wp_mail() ist nicht fehlerhaft, in dem der Sail WordPress-Profiler eingesetzt wurde, um die Zeit für den Versand von 20 E-Mails zu messen. Die SMTP-Plugins waren bis zu 90-mal langsamer als die Standard-sendmail-Methode.

Die bessere Alternative ist die Kombination aus einer lokalen Warteschlange und einem Transaktions-E-Mail-Service. Dies lässt sich durch den Einsatz eines lokalen MTAs, wie Postfix, in einem SMTP-Relay-Modus umsetzen, in dem dieser als lokaler SMTP-Server fungiert. Alle eingehenden E-Mails werden dabei jedoch einfach an den externen Dienst, wie z. B. Mailgun, weitergeleitet.

Dadurch wird sichergestellt, dass WordPress beim E-Mail-Versand keine ressourcenintensiven Aufgaben übernehmen muss. Gleichzeitig verbessert sich die E-Mail-Zustellbarkeit durch den Versand über Mailgun.

Bedenken Sie, dass diese Methode Root-Rechte erfordert, um die Software auf Ihrem Server zu installieren und zu konfigurieren. Es ist also etwas mehr Aufwand nötig als bei einem einfachen WordPress-Plugin. Wenn Sie jedoch Sail für die Bereitstellung und Verwaltung von WordPress auf DigitalOcean nutzen, erhalten Sie genau diese Konfiguration in einem einzigen Blueprint:

                                

                                    rnsail blueprint mailgun.yamlrn
                                
                            

Dieser Blueprint installiert und konfiguriert eine Postfix-Instanz auf Ihrem Server, um E-Mails an die SMTP-Server von Mailgun weiterzuleiten. Sie werden nach dem SMTP-Benutzernamen und dem Passwort gefragt. Beides können Sie in Ihrem Mailgun-Dashboard abrufen oder zurücksetzen.

Wenn Sie Sail nicht verwenden und lieber manuell vorgehen möchten, finden Sie hier einen großartigen Leitfaden für die Einrichtung eines lokalen Relays mit Postfix unter Ubuntu Linux.

Wählen Sie eine zuverlässige Methode für den E-Mail-Versand mit WordPress

Für viele Unternehmen sind E-Mails ein unverzichtbarer Bestandteil des Geschäftsbetriebs. Daher bedarf es einer verlässlichen Methode für den Versand von Nachrichten, insbesondere von Transaktions-E-Mails. Bei einem hohen Versandvolumen sollte das Entwicklungsteam E-Mail-Lösungen für WordPress in Betracht ziehen, die über die Standardoption hinausgehen.

Einer der größten Vorteile der Nutzung von Open-Source-Lösungen wie WordPress ist, dass Fachleute Zugriff auf eine Vielzahl an Ressourcen, einschließlich Plugins und kostenlosen Lösungen, haben. Die Kombination aus Mailgun und Sail CLI ist ein hervorragendes Beispiel dafür, wie Entwicklungsteams WordPress-Anwendungen skalieren und den E-Mail-Versand über die Plattform optimieren können.

Konstantin Kovshenin ist WordPress Core Contributor, hält Vorträge und entwickelt Plugins. Zudem bietet er weitreichende Expertise in puncto WordPress-Leistung, -Skalierung und -Sicherheit.