Aus WordPress heraus E-mails versenden kann eine nervige Angelegenheit sein. Meistens ist das vom Webhoster abhängig, weil sehr oft den PHP basierten Mailversand deaktivieren. Das ist unter gewissen Aspekten nachvollziehbar, aber es löst das Problem des Seitenbetreibers nicht.
Es gibt eine ganze Reihe von Plugins, die das Versenden von E-mails aus WordPress heraus übernehmen. Von kostenlos bis ausgewachsener Tracking-Suite mit Anbindung an diverse Services ist alles vorhanden. Aber getreu dem Motto „weniger ist mehr“ wollen wir doch mal schauen, ob der Emailversand auch ohne ein zusätzliches Plugin möglich ist.
Codeschnipsel für Plugin-losen SMTP Versand
Ich empfehle generell den Einsatz des SMTP Protokolls, damit die Emails auch wirklich versandt werden und beim Adressaten ankommen. An zwei Stellen eurer Installation müsst ihr etwas ändern, wenn ihr aus WordPress Emails über das SMTP Protokoll versenden wollt.
1. Codeschnipsel für die wp-config.php
In der wp-config.php Datei im root-Bereich der WordPress Installation legt ihr die SMTP Daten als Konstanten fest. Das sollte auf jeden Fall vor der Zeile stehen, in der man gewarnt wird, ab hier nicht mehr zu editieren. Die entsprechenden Daten für das E-Mail-Konto erfahrt ihr beim Hoster.
define( 'SMTP_USER', 'user@example.com' ); // Benutzername für die SMTP-Authentifizierung
define( 'SMTP_PASS', 'smtp password' ); // Passwort für die SMTP-Authentifizierung
define( 'SMTP_HOST', 'smtp.example.com' ); // Der Hostname des Mailservers
define( 'SMTP_FROM', 'website@example.com' ); // SMTP Von E-Mail-Adresse
define( 'SMTP_NAME', 'e.g Website Name' ); // SMTP Von Name
define( 'SMTP_REPLY_TO_EMAIL', 'mueller@example.com' ); // "Reply-To" E-Mail-Adresse
define( 'SMTP_REPLY_TO_NAME', 'Lieschen Müller' ); // "Reply-To" Name
define( 'SMTP_PORT', '25' ); // SMTP-Portnummer - wahrscheinlich 25, 465 oder 587
define( 'SMTP_SECURE', 'tls' ); // Zu verwendendes Verschlüsselungssystem - ssl oder tls
define( 'SMTP_AUTH', true ); // SMTP-Authentifizierung verwenden (true|false)
define( 'SMTP_DEBUG', 0 ); // nur für Debugging-Zwecke auf 1 oder 2 setzen
Codeschnipsel für die functions.php
Nun müsst ihr noch den folgenden Codeschnipsel in die Datei functions.php des aktiven Themes eintragen. Achtung: Bei einer Aktualisierung des Themes wird die functions.php (und damit auch eure Änderung) sehr wahrscheinlich überschrieben. Um das zu vermeiden, könnt ihr mit einem Child-Theme arbeiten oder aber ein Plugin wie Code Snippets einsetzen.
add_action( 'phpmailer_init', 'send_smtp_email' );
function send_smtp_email( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = SMTP_HOST;
$phpmailer->SMTPAuth = SMTP_AUTH;
$phpmailer->Port = SMTP_PORT;
$phpmailer->Username = SMTP_USER;
$phpmailer->Password = SMTP_PASS;
$phpmailer->SMTPSecure = SMTP_SECURE;
$phpmailer->From = SMTP_FROM;
$phpmailer->FromName = SMTP_NAME;
$phpmailer->AddReplyTo( SMTP_REPLY_TO_EMAIL, SMTP_REPLY_TO_NAME );
}
Diese Funktion klinkt sich in den Mailing-Prozess von WordPress ein und stellt die SMTP Zugriffsdaten für das Mailkonto zur Verfügung. Die benötigten Konstanten habt ihr bereits in der wp-config.php festgelegt, womit diese gleich als erstes geladen werden und danach systemweit zur Verfügung stehen.
Alternativen
Wer dennoch lieber auf ein Plugin setzt, findet zum Beispiel mit WP Mail SMTP von WPForms eine zuverlässige Lösung.
Hallo Lars! Könnte ich auf diesem Weg auch generell einen Reply-To Header mit konfigurieren? Wie müssten die beiden Schnipsel ergänzt werden? Vielen Dank,
Lin
Hallo Lin,
habe Deine Anregung aufgegriffen und die Code Snippets dahingehend erweitertet.