gpt4 book ai didi

php - 无法检索完整的 SMTP 错误日志 PHP 邮件程序

转载 作者:行者123 更新时间:2023-11-28 23:24:07 26 4
gpt4 key购买 nike

我创建了一个简单的表 log,如果无法发送邮件,我会在其中插入记录。

mysql> describe log;
+--------+-----------+------+-----+---------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-----------+------+-----+---------------------+-----------------------------+
| id_log | int(11) | NO | PRI | NULL | auto_increment |
| error | text | YES | | NULL | |
| time | timestamp | NO | | 0000-00-00 00:00:00 | on update CURRENT_TIMESTAMP |
+--------+-----------+------+-----+---------------------+-----------------------------+

在我的 PHP 端,错误记录是这样的:

  foreach ($arrayWithMails as $key => $value) {
$mail->addAddress($value);
if (!$mail->send())
{
put('message', $mail->ErrorInfo); //store in session
// echo $mail->ErrorInfo;

}
else {
/* Add email from array in session to be displayed at main page */
put('emailAddresses', $arrayWithMails); //Store in session

}
$mail->ClearAllRecipients();
}
$log->logError($_SESSION['message']);

它调用我类中的一个方法,该方法将字符串作为参数传递,并插入到数据库中。

但是,我所有的日志都是这样的:

mysql> select * from  log;
+--------+------------------------------------------------------------------------------------+---------------------+
| id_log | error | time |
+--------+------------------------------------------------------------------------------------+---------------------+
| 1 | SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting | 2016-10-21 15:08:30 |
| 2 | 1 | 2016-10-21 15:12:04 |
| 3 | 1 | 2016-10-21 15:13:42 |
| 4 | SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting | 2016-10-21 15:14:14 |
| 5 | SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting | 2016-10-21 15:17:02 |
| 6 | SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting | 2016-10-21 15:18:22 |
| 7 | SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting | 2016-10-21 15:28:02 |
| 8 | SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting | 2016-10-21 15:28:53 |
+--------+------------------------------------------------------------------------------------+---------------------+

我的 SMTP 调试设置为 4。也尝试使用 2 - 结果相同。

如果 f.e.我做了 $mail->ErrorInfo 的基本回显我得到完整的日志,有错误,但是当我想在数据库中存储完整的日志信息时,我只得到:SMTP 连接 () 失败。 https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting如果我尝试将该错误存储在 $_SESSION var 中,则会发生同样的事情。

知道如何存储完整日志吗?谢谢!

最佳答案

ErrorInfo 仅包含错误消息,不包含完整的调试日志。调试输出就是这样 - 它默认转储到标准输出,不保留。

要捕获它,您需要查看 Debugoutput 属性 - 在最新版本的 PHPMailer 中,您可以将其设置为一个可调用对象,您可以使用它来收集调试输出并将其插入到您的数据库中。

例如:

//Before sending
$debuglog = '';
$mail->Debugoutput = function($str, $level) use ($debuglog) {
$debuglog .= $str;
};

//... after calling send()
$log->logError($mail->Errorinfo . ' ' . $debuglog);

关于php - 无法检索完整的 SMTP 错误日志 PHP 邮件程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40178145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com