我有以下代码。出现错误:
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);
调试信息参数:
$mail->SMTPDebug = 2;该参数允许值为0.1和2。您已指定参数3:
并在函数本身中,如 Daniele_Taby 上面所写,输出值:
要输出PHPMailer提供的调试信息,您需要使用ErrorInfo属性。此属性将包含发送信件时发生的最后一个错误的文本。