Emails aus WordPress via SMTP versenden – ohne Plugin

Heute habe ich eine neue WordPress Installation durchgeführt. Auf einem Server, auf dem kein Mailserver installiert ist. 

Zudem gibt es manchmal das Problem, dass die Emails aus WordPress nicht versendet werden können. Der Grund kann sein, dass die Hostadresse des Absenders nicht mit dem Server, auf dem die Webseite liegt übereinstimmt.

WordPress versendet die Emails über die PHP-Mailer-Funktion. Eine Lösung wäre hier die phpmailer Funktion durch SMTP zu ersetzen.

Es gibt einige Plugins, die man nutzen kann. Jedoch die elegantere Lösung ist die “functions.php” im Themes-Ordner und die “wp-config.php im Root-Verzeichnis zu ergänzen.

Der zu ergänzende Inhalt der functions.php des aktiven Themes (/wp-content/themes/*)

				
					/* Diese Funktion verbindet wp_mail mit Ihrem authentifizierten 
 * SMTP-Server. Dies verbessert die Zuverlässigkeit von wp_mail, und 
 * vermeidet viele potentielle Probleme. 
 * 
 * Die Werte sind Konstanten, die in der wp-config.php gesetzt sind. 
 */ 
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;
}

				
			

Der zu ergänzende Inhalt der wp-config.php (im Root-Verzeichnis der WordPress-Installation)

				
					/* Setzen Sie folgende Konstanten in wp-config.php
 * Diese sollten irgendwo VOR der
 * Konstante ABSPATH definiert sein.
 */
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

				
			

Jetzt sollte WordPress alle Mails via SMTP versenden. 
Getestet mit WordPress 5.3.2

Quelle: https://gist.github.com/butlerblog

Danke fürs Teilen!