Emailversand aus WordPress ohne SMTP Plugin

Normalerweise versendet WordPress Emails über die eigene wp_mail Funktion. Dabei greift wp_mail im Normalfall auf die phpmailer Funktion des Webservers zurück. Es handelt sich also um einen Emailversand mittels Methoden des Webservers. Ein Mailserver bleibt außen vor.

Aus den verschiedensten Gründen macht das nicht jeder Webhoster mit und deaktiviert diese Möglichkeit bzw. schränkt sie stark ein. Deshalb ist es ratsamer, gleich alles auf SMTP umzustellen. Für diesen Zweck gibt es mittlerweile so einige Plugins, die sich um den Verbindungsaufbau zum Mailserver kümmern. Wer jetzt stöhnt „oh, schon wieder ein Plugin mehr auf meinem System“ – dem kann geholfen werden. Bei Patrick Asmus habe ich Codeschnipsel gefunden, mit denen man Mails via SMTP versenden kann und kein zusätzliches Plugin zu installieren braucht. Leider hat sich der gute Patrick für eine tödliche Farbkombination auf seiner Webseite entschieden (dunkelblau auf schwarzem Grund), weshalb ich hier noch einmal alles niederschreibe, statt einfach nur zum Artikel zu verlinken.

Codeschnipsel für Plugin-losen SMTP Versand

An zwei Stellen eurer Installation müsst ihr etwas ändern, wenn ihr aus WordPress Emails über das SMTP Protokoll versenden wollt.

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 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_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;
	}

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, sollte sich WP Mail SMTP von WPForms ansehen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.