我正在尝试显示PHPMailer SMTP调试信息。,这是好的,,如果电子邮件失败,但两封电子邮件被发送,如果成功。
global $phpmailer;
$send = wp_mail( $to, 'Test Email', $message );
$phpmailer->SMTPDebug = 3;
ob_start();
$send = wp_mail( $to, 'Test Email', $message );
$smtp_debug = ob_get_clean();
echo "<pre>"; print_r( $smtp_debug ); echo "</pre>";如果删除第一个wp_mail()
global $phpmailer;
$phpmailer->SMTPDebug = 3;
ob_start();
$send = wp_mail( $to, 'Test Email', $message );
$smtp_debug = ob_get_clean();
echo "<pre>"; print_r( $smtp_debug ); echo "</pre>";它发出警告:
PHP警告:从行中的空值创建默认对象:
$phpmailer->SMTPDebug = 3;
如果删除第二个wp_mail(),则$smtp_debug将为空。
那么,如何在成功时只发送一封电子邮件,并在失败时捕获错误呢?
发布于 2020-01-07 13:45:22
要控制PHPMailer的调试输出,可以将一个可调用的函数注入Debugoutput属性,作为源代码上写着
$phpmailer->Debugoutput = function($str, $level) {
echo "debug level $level; message: $str";
};这只是一个例子--在这个闭包中你可以做任何你想做的事情--写一个日志文件,把数据发送到外部API,等等。这是一种比使用输出缓冲更好和不那么复杂的方法。
正如@Akam所说,您得到的default object警告意味着$phpmailer变量为空(例如NULL或未定义),因此您正在设置一个不存在的属性,从而产生警告。
检查$phpmailer包含您认为应该包含的内容(即跟踪它最初创建的位置),并确保代码在尝试使用实例之前运行。
https://stackoverflow.com/questions/59622655
复制相似问题