Archive: Month 3, Year 2012

WordPress: Mailversand per SMTP

01.03.2012 yahe administration code legacy wordpress

Es kommt durchaus mal vor, dass man WordPress auf einem Server einsetzt, der keinen Mailversand über die PHP-Funktion "mail()" zulässt. In solchen Fällen muss man auf den Mailversand per SMTP zurückgreifen. Leider bietet WordPress nicht die Möglichkeit, die SMTP-Konfiguration direkt vorzunehmen. Das ist sehr schade, denn eigentlich wäre es kein großer Aufwand, dies bereitzustellen. Folgendermaßen muss man vorgehen, um WordPress dazu zu bringen, Mails via SMTP zu verschicken.

Zuerst einmal müsst ihr die SMTP-Konfiguration irgendwo hinterlegen. Ich habe dazu die Datei "wp-config.php" ausgewählt, da dort sowieso auch alle anderen, fest verdrahteten Informationen abgelegt sind. Dort habe ich die Funktion "smtp_wp_mail()" hinterlegt, die wie folgt aussieht:

function smtp_wp_mail($phpmailer) {
  $phpmailer->IsSMTP(); // telling the class to use SMTP

  $phpmailer->Host       = "smtp.example.com";      // set the SMTP server host
  $phpmailer->Port       = 465;                     // set the SMTP server port
  $phpmailer->SMTPSecure = "ssl";                   // enable SMTP via SSL
  $phpmailer->SMTPAuth   = true;                    // enable SMTP authentication
  $phpmailer->Username   = "wordpress@example.com"; // set the SMTP account username
  $phpmailer->Password   = "SECRETPASSWORD";        // set the SMTP account password
}

WordPress verwendet intern für den Mailversand die Funktion "wp_mail()", die wiederum die Bibliothek PHPMailer kapselt. PHPMailer beherrscht bereits den Versand von E-Mails über SMTP, es muss nur richtig konfiguriert werden. Um die Umkonfigurierung auch tatsächlich durchzuführen, benötigen wir nur noch ein kleines Plugin, das unsere gerade geschrieben Funktion zum richtigen Zeitpunkt aufruft:

<?php
  /*
    Plugin Name: SMTPwpMail
    Plugin URI: http://yahe.sh/
    Description: Use SMTP for WordPress mail delivery.
    Version: 0.1c1
    Author: Yahe
    Author URI: http://yahe.sh/
  */

  /* STOP EDITING HERE IF YOU DO NOT KNOW WHAT YOU ARE DOING */

  // function smtp_wp_mail($phpmailer) should be defined in wp-config.php
  add_action("phpmailer_init", "smtp_wp_mail");
?>

Mit diesen kleinen Änderungen kann WordPress nun E-Mails per SMTP versenden.


Search

Links

RSS feed

Categories

administration (40)
arduino (12)
calcpw (2)
code (33)
hardware (16)
java (2)
legacy (113)
linux (27)
publicity (6)
review (2)
security (58)
thoughts (21)
windows (17)
wordpress (19)