Чтобы получить контроль над выводом отладки PHPMailer, вы можете ввести вызываемое свойство в свойство Debugoutput
, так как исходный код говорит: :
$phpmailer->Debugoutput = function($str, $level) {
echo "debug level $level; message: $str";
};
Это всего лишь пример - вы внутри этого замыкания можно делать все что угодно - записывать в файл журнала, отправлять данные во внешний API и т. д. c. Это гораздо лучший и менее сложный подход, чем использование буферизации вывода.
Как сказал @Akam, предупреждение default object
, которое вы получаете, означает, что переменная $phpmailer
пуста (например, NULL или undefined) и, таким образом, вы устанавливаете несуществующее свойство, в результате чего появляется предупреждение.
Убедитесь, что $phpmailer
содержит то, что, как вы думаете, должно (т.е. отследите, где оно было изначально создано), и убедитесь, что код запускается до того, как вы попытаетесь использовать экземпляр.