Ein kleines Snippet um alle Mails in das Default Error Log zu schreiben (meistens /var/log/apache2/error.log oä.)

<?php
/*
Plugin Name: Mail > log
Plugin URI: https://igorshp.de/2016/07/wordpress-mails-loggen/
Description: This Plugin writes all mails to the default log file
Author: Igor Scheller <igor.scheller@igorshp.de>
Version: 1.0.0
Author URI: https://igorshp.de/
*/

if (!function_exists('wp_mail')) :
    function wp_mail($to, $subject, $message, $headers = '', $attachments = [])
    {
        $data = [
            'to'          => $to,
            'subject'     => $subject,
            'message'     => $message,
            'headers'     => $headers,
            'attachments' => $attachments,
        ];

        $message = sprintf(
            'New Mail: %s',
            json_encode($data)
        );

        error_log($message, 0);

        return true;
    }
endif;

Das Snippet einfach als wp-content/plugins/maillog.php speichern und das Mail > log Plugin aktivieren, von nun an werden alle Mails die über die wp_mail-Funktion versendet werden ins Log geschrieben.

Sollen die Mails in eine Datei geschrieben werden, einfach die Zeile error_log($message, 0); mit error_log($message, 3, __DIR__ . '/../../mail.log'); austauschen, dadurch kannst du sie über domain.tld/mail.log aufrufen. Aber Achtung: Dies sollte NIE auf einem Produktivsystem aktiviert werden: Die Maillogs sind dadurch !ÖFFENTLICH! erreichbar!