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

时间:2016-11-28 02:53:59

标签: php email logging wamp phpmailer

的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文件中编写邮件日志吗?

1 个答案:

答案 0 :(得分:1)

您的本地日志文件适用于您的本地邮件服务器,但您需要直接发送到外部服务器,因此它不会通过您的本地服务器,因此无需记录。如果你想捕获调试输出并记录它,看看Debugoutput属性提供的选项 - 你可以注入一个callable并将它保存到你喜欢的地方,如下所示:

$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
  );
};