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. 

Manchmal gibt es 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 der WordPress Installation 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

📑 Ähnliche Beiträge
Vergrößern einer Partition in Ubuntu

Stell dir vor, deine Ubuntu-Installation braucht einfach mehr „Luft zum Atmen“. Angenommen, du hast eine 100GB-SSD, auf der 30GB für Read more

Asciinema 3: Installation der neuesten Version des Terminal Session Recorder

Asciinema hat sich als das Tool der Wahl für das Aufzeichnen und Teilen von Terminal-Sessions etabliert. In der kommenden Version Read more

Fritz!Box per Bash-Script neustarten

Heute möchte ich dir ein nützliches Bash-Script vorstellen, das mir persönlich sehr geholfen hat. Es handelt sich um ein "Fritz!Box Read more

Linux: Einfach E-Mails versenden mit msmtp

Oft ist es sinnvoll, wenn man sich von seinem Linux System Benachrichtigungsmails versenden lassen kann. Anwendungsbeispiele wären zum Beispiel der Read more

OwnCloud: Den Footer im Login-Screen bearbeiten

In diesem Beitrag möchte ich den Footer der OwnCloud anpassen. Das bearbeiten des Footers geht ziemlich einfach und schnell. Ich Read more

Vielen Dank fürs Teilen!