Как сделать вывод отладочной информации в phpmailer?
У меня есть следующий код. Выходит ошибка:
desc: "Причина ошибки: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting"info: "Сообщение не было отправлено. Ошибка при отправке письма"
result: "error"
Я хочу вывести отладочную информацию, но не понимаю, где ее подключить, чтобы она выводилась. $mail->SMTPDebug = 3; подключил, но не пойму как выводить информацию. Буду рад любой помощи! Мой код:
if (!error_get_last()) {
// Переменные, которые отправляет пользователь
$name = $_POST['yourName'] ;
$email = $_POST['email'];
$text = $_POST['select'];
$file = $_FILES['fileFF'];
// Формирование самого письма
$title = "Заголовок письма";
$body = "
<h2>Новое письмо</h2>
<b>Имя:</b> $name<br>
<b>Почта:</b> $email<br><br>
<b>Сообщение:</b><br>$text
";
// Настройки PHPMailer
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->isSMTP();
$mail->CharSet = "UTF-8";
$mail->SMTPAuth = true;
$mail->SMTPDebug = 3;
$mail->Debugoutput = function($str, $level) {$GLOBALS['data']['debug'][] = $str;};
// Настройки вашей почты
$mail->Host = 'smtp.yandex.ru'; // SMTP сервера вашей почты
$mail->Username = '********'; // Логин на почте
$mail->Password = '********'; // Пароль на почте
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setFrom('**********', 'Name'); // Адрес самой почты и имя отправителя
// Получатель письма
$mail->addAddress('**********');
//$mail->addAddress('[email protected]'); // Ещё один, если нужен
// Прикрипление файлов к письму
if (!empty($file['name'][0])) {
for ($i = 0; $i < $file['tmp_name']; $i++) {
if ($file['error'][$i] === 0)
$mail->addAttachment($file['tmp_name'][$i], $file['name'][$i]);
}
}
// Отправка сообщения
$mail->isHTML(true);
$mail->Subject = $title;
$mail->Body = $body;
// Проверяем отправленность сообщения
if ($mail->send()) {
$data['result'] = "success";
$data['info'] = "Сообщение успешно отправлено!";
} else {
$data['result'] = "error";
$data['info'] = "Сообщение не было отправлено. Ошибка при отправке письма" ;
$data['desc'] = "Причина ошибки: {$mail->ErrorInfo}";
}
} else {
$data['result'] = "error";
$data['info'] = "В коде присутствует ошибка";
$data['desc'] = error_get_last();
}
// Отправка результата
header('Content-Type: application/json');
echo json_encode($data);
Ответы (2 шт):
Автор решения: Daniele_Taby
→ Ссылка
Чтобы вывести отладочную информацию, которую предоставляет PHPMailer, вам нужно использовать свойство ErrorInfo. Это свойство будет содержать текст последней ошибки, произошедшей при отправке письма.
Автор решения: Denis640Kb
→ Ссылка
Параметр отладочной информации:
$mail->SMTPDebug = 2;
Данный параметр допускает значения 0,1 и 2. У Вас указан параметр 3:
* SMTP class debug output mode.
* Options: 0 = off, 1 = commands, 2 = commands and data
* @type int
* @see SMTP::$do_debug
*/
public $SMTPDebug = 0;
и в самой функции, как писал выше Daniele_Taby вывод значения:
if (!$mail->send()) {
return 'Mailer Error: ' . $mail->ErrorInfo;
} else {
return 'Сообщение отправлено!';
}