使用 PHPMailer 时看不到邮件日志,但如果我使用简单的 php mail() 函数,我可以看到日志

Can't see mail log when using PHPMailer but if I use simple php mail() function i can see log

php.ini

mail.log = "c:/wamp/logs/maillog.log"

PHPMailer_Email.php (使用下面的脚本,它不会在指定的文件中写入日志,而是发送电子邮件。)

include 'vendor/autoload.php';
  $mail = new PHPMailer;
  $mail->isSMTP();
  $mail->SMTPDebug = 2;
  $mail->Host = "domain.example.net";
  $mail->Port = 25;
  $mail->From = $from;
  $mail->FromName = "From Name";
  $mail->addAddress($to);
  $mail->addReplyTo($from, "Reply");
  $mail->isHTML(true);
  $mail->Subject = $subject;
  $mail->Body = $body;
  $mail->AltBody = $body;
  if(!$mail->send()){
    echo "Mailer Error: ". $mail->ErrorInfo; die();
  }
  else{
    echo "Message has been sent successfully";
  }

Email.php (使用下面的脚本,它写日志并发送电子邮件)

mail($to, $subject, $body);

谁能建议我如何让 PHPMailer 在 maillog.log 文件中写入邮件日志?

您的本地日志文件是针对您的本地邮件服务器的,但您是直接发送到外部服务器,因此它不会通过您的本地服务器,所以没有什么可记录的。如果您想捕获调试输出并记录它,请查看 Debugoutput 属性 提供的选项 - 您可以注入一个可调用对象并将其保存在您喜欢的任何位置,如下所示:

$mail->DebugOutput = function ($str, $level) {
  file_put_contents(
    '/path/to/log/file',
    date('Y-m-d H:i:s') . "\t" . $str,
    FILE_APPEND | LOCK_EX
  );
};