phpmailer debug output to html variable

glend picture glend · Nov 25, 2014 · Viewed 21.7k times · Source

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';

Answer

Synchro picture Synchro · Nov 25, 2014

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;