首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在其他位置打印SMTP调试?

如何在其他位置打印SMTP调试?
EN

Stack Overflow用户
提问于 2020-01-07 05:27:25
回答 1查看 764关注 0票数 0

我正在尝试显示PHPMailer SMTP调试信息。,这是好的,,如果电子邮件失败,但两封电子邮件被发送,如果成功。

代码语言:javascript
复制
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()

代码语言:javascript
复制
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将为空。

那么,如何在成功时只发送一封电子邮件,并在失败时捕获错误呢?

EN

回答 1

Stack Overflow用户

发布于 2020-01-07 13:45:22

要控制PHPMailer的调试输出,可以将一个可调用的函数注入Debugoutput属性,作为源代码上写着

代码语言:javascript
复制
$phpmailer->Debugoutput = function($str, $level) {
    echo "debug level $level; message: $str";
};

这只是一个例子--在这个闭包中你可以做任何你想做的事情--写一个日志文件,把数据发送到外部API,等等。这是一种比使用输出缓冲更好和不那么复杂的方法。

正如@Akam所说,您得到的default object警告意味着$phpmailer变量为空(例如NULL或未定义),因此您正在设置一个不存在的属性,从而产生警告。

检查$phpmailer包含您认为应该包含的内容(即跟踪它最初创建的位置),并确保代码在尝试使用实例之前运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59622655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档