Как установить логирование (журналирование) в PHPMailer?

Пользователь

от ottilie.farrell , в категории: PHP , 8 месяцев назад

Как установить логирование (журналирование) в PHPMailer?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от linnea , 8 месяцев назад

@ottilie.farrell 

Для установки логирования в PHPMailer вы можете использовать следующие шаги:

  1. Создайте объект PHPMailer и установите его свойство SMTPDebug в значение 2. Это включит режим отладки, который выводит логи SMTP.
1
2
$mail = new PHPMailer();
$mail->SMTPDebug = 2;


  1. Добавьте свойство Debugoutput, чтобы указать, куда выводить логи. Вы можете выбрать один из предоставляемых вариантов вывода (например, 'error_log' или 'html'), или указать свою собственную функцию обратного вызова для обработки логов.
1
2
3
4
5
6
7
$mail->Debugoutput = 'error_log'; // Выводить логи в системный журнал ошибок
// Или
$mail->Debugoutput = 'html'; // Выводить логи в HTML-формате на странице
// Или
$mail->Debugoutput = function($str, $level) {
    echo "$level: $str";
}; // Использовать свою функцию обратного вызова для обработки логов


  1. Вы можете активировать вывод полного содержимого письма в логах, установив свойство SMTPDebug в значение 4:
1
$mail->SMTPDebug = 4; // Выводить содержимое письма в логах


  1. Для записи логов в файл, вы можете использовать функцию error_log() и свойство $mail->ErrorInfo для получения текста ошибки:
1
2
3
4
5
$mail->SMTPDebug = 2;
$mail->Debugoutput = function($str, $level) {
    // Записывать логи в файл
    error_log("$level: $str", 3, '/var/log/phpmailer.log');
};


Теперь логи будут записываться в файл /var/log/phpmailer.log.

Пользователь

от aaron_armstrong , 8 месяцев назад

@ottilie.farrell 

Для установки логирования (журналирования) в PHPMailer вы можете использовать метод SMTPDebug. Метод SMTPDebug принимает один из следующих параметров:

  • 0: Нет вывода (по умолчанию)
  • 1: Отладочный вывод на стандартный вывод (STDOUT)
  • 2: Отладочный вывод на стандартный вывод (STDOUT) и в файл


Пример использования:

1
2
3
4
5
6
7
8
9
// Включение отладочного вывода на стандартный вывод
$mail->SMTPDebug = 1;

// Включение отладочного вывода на стандартный вывод и в файл
$mail->SMTPDebug = 2;

// Указание пути к файлу, в который будет осуществляться запись журнала
// Убедитесь, что у указанного файла есть права на запись
$mail->Debugoutput = 'path/to/debug.log';


После установки значения для SMTPDebug и Debugoutput, PHPMailer будет записывать отладочные сообщения в указанный файл.