Probleme beim WordPress-Mailversand analysieren

Über die Funktion wp_mail() kann man mit WordPress schnell und unkompliziert Mails versenden:

$to = 'mail@example.com'; // Empfänger
$subject = 'Test Subject'; // Betreff
$body = 'Test Content'; // Inhalt
$headers = ['Content-Type: text/html; charset=UTF-8'];

wp_mail($to, $subject, $body, $headers);

Tritt dabei jedoch ein Fehler auf, dann gibt die Funktion wp_mail einfach nur 0 zurück. Den wirklichen Grund, weshalb das Versenden der Mail fehlgeschlagen ist, erfährt man dadurch nicht.

Um dies zu verbessern hilft die nachfolgende Funktion wpmail_debug(). Tritt ein Fehler beim Versand der Mail auf, gibt diese Funktion die Fehlerbeschreibung aus:

if (!function_exists('debug_wpmail')) {
    function wpmail_debug($result = false)
    {
        // Return, wenn Mail erfolgreich versendet wurde
        if ($result) {
            return;
        }

        global $ts_mail_errors, $phpmailer;

        // Wenn $ts_mail_errors noch nicht existiert, dann erstelle es als Array
        if (!isset($ts_mail_errors)) {
            $ts_mail_errors = [];
        }

        // Wenn $phpmailer existiert, dann füge den Fehler hinzu
        if (isset($phpmailer)) {
            $ts_mail_errors[] = $phpmailer->ErrorInfo;
        }

        echo '<pre>';
        print_r($ts_mail_errors);
        echo '</pre>';
    }
}

$to = 'mail@example.com'; // Empfänger
$subject = 'Test Subject'; // Betreff
$body = 'Test Content'; // Inhalt
$headers = ['Content-Type: text/html; charset=UTF-8'];

$result = wp_mail($to, $subject, $body, $headers);

wpmail_debug($result);

Dadurch lassen sich Fehler in der Mailkonfiguration schnell schnell und einfach identifizieren und idealerweise beheben.

Schreibe einen Kommentar

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