Search code examples
phphtmlphpmailer

phpmailer debug output to html variable


Im looking to use php mailers debug information to display in a webpage. When I enable debugging it just echo's the string. This means that my html is out of order, I wish to therefor output as a variable so I can place the output html where i want it.

$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';

Solution

  • A recent change in PHPMailer allows Debugoutput to be a closure, so you can make it do whatever you like, for example to collect all the debug output and emit it later:

    $debug = '';
    $mail->Debugoutput = function($str, $level) {
        $GLOBALS['debug'] .= "$level: $str\n";
    };
    //...later
    echo $debug;