phpmailer ошибка
При отправке данных на почту получаю:
Ошибка: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
В логах получаю:
2022-06-19 15:56:54 Connection: opening to ssl://smtp.mail.ru:587, timeout=300, options=array() 2022-06-19 15:56:54 Connection failed. Error #2: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol [D:\progs\OpenServer\OpenServer\domains\dist\phpmailer\SMTP.php line 394] 2022-06-19 15:56:54 Connection failed. Error #2: stream_socket_client(): Failed to enable crypto [D:\progs\OpenServer\OpenServer\domains\dist\phpmailer\SMTP.php line 394] 2022-06-19 15:56:54 Connection failed. Error #2: stream_socket_client(): unable to connect to ssl://smtp.mail.ru:587 (Unknown error) [D:\progs\OpenServer\OpenServer\domains\dist\phpmailer\SMTP.php line 394] 2022-06-19 15:56:54 SMTP ERROR: Failed to connect to server: (0) SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Ошибка: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
php код:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;
require "phpmailer/Exception.php";
require "phpmailer/PHPMailer.php";
require "phpmailer/SMTP.php";
$mail = new PHPMailer();
$mail->isSMTP(); // Отправка через SMTP
$mail->Host = 'smtp.mail.ru'; // Адрес SMTP сервера
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]';
$mail->Password = 'prizrak'; // ваш пароль
$mail->SMTPSecure = 'ssl'; // шифрование ssl
$mail->Port = 587;
$mail->SMTPDebug = 4; // порт подключения
$mail->setFrom('[email protected]', 'Иван Иванов'); // от кого
$mail->addAddress('[email protected]', 'Вася Петров'); // кому
$mail->Subject = 'Тест';
$mail->msgHTML("<html><body>
<h1>Здравствуйте!</h1>
<p>Это тестовое письмо.</p>
</html></body>");
// Отправляем
if ($mail->send()) {
echo 'Письмо отправлено!';
} else {
echo 'Ошибка: ' . $mail->ErrorInfo;
}
?>
Новые логи:
2022-06-19 16:35:18 Connection: opening to ssl://smtp.mail.ru:465, timeout=300, options=array()
2022-06-19 16:35:18 Connection: opened
2022-06-19 16:35:18 SMTP INBOUND: "220 smtp3.mail.ru ESMTP ready (Looking for Mail for your domain? Visit https://biz.mail.ru)"
2022-06-19 16:35:18 SERVER -> CLIENT: 220 smtp3.mail.ru ESMTP ready (Looking for Mail for your domain? Visit https://biz.mail.ru)
2022-06-19 16:35:18 CLIENT -> SERVER: EHLO dist
2022-06-19 16:35:19 SMTP INBOUND: "250-smtp3.mail.ru"
2022-06-19 16:35:19 SMTP INBOUND: "250-SIZE 73400320"
2022-06-19 16:35:19 SMTP INBOUND: "250-8BITMIME"
2022-06-19 16:35:19 SMTP INBOUND: "250-PIPELINING"
2022-06-19 16:35:19 SMTP INBOUND: "250 AUTH PLAIN LOGIN XOAUTH2"
2022-06-19 16:35:19 SERVER -> CLIENT: 250-smtp3.mail.ru250-SIZE 73400320250-8BITMIME250-PIPELINING250 AUTH PLAIN LOGIN XOAUTH2
2022-06-19 16:35:19 Auth method requested: UNSPECIFIED
2022-06-19 16:35:19 Auth methods available on the server: PLAIN,LOGIN,XOAUTH2
2022-06-19 16:35:19 Requested auth method not available:
2022-06-19 16:35:19 Auth method selected: LOGIN
2022-06-19 16:35:19 CLIENT -> SERVER: AUTH LOGIN
2022-06-19 16:35:19 SMTP INBOUND: "334 VXNlcm5hbWU6"
2022-06-19 16:35:19 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2022-06-19 16:35:19 CLIENT -> SERVER: dGVzdEBkZXdwb2ludC5ieQ==
2022-06-19 16:35:19 SMTP INBOUND: "334 UGFzc3dvcmQ6"
2022-06-19 16:35:19 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2022-06-19 16:35:19 CLIENT -> SERVER: TDZlWEZ8RElMeA==
2022-06-19 16:35:20 SMTP INBOUND: "535 5.7.0 NEOBHODIM parol prilozheniya https://help.mail.ru/mail/security/protection/external / Application password is REQUIRED"
2022-06-19 16:35:20 SERVER -> CLIENT: 535 5.7.0 NEOBHODIM parol prilozheniya https://help.mail.ru/mail/security/protection/external / Application password is REQUIRED
2022-06-19 16:35:20 SMTP ERROR: Password command failed: 535 5.7.0 NEOBHODIM parol prilozheniya https://help.mail.ru/mail/security/protection/external / Application password is REQUIRED
SMTP Error: Could not authenticate.
2022-06-19 16:35:20 CLIENT -> SERVER: QUIT
2022-06-19 16:35:20 SMTP INBOUND: "221 2.0.0 Bye"
2022-06-19 16:35:20 SERVER -> CLIENT: 221 2.0.0 Bye
2022-06-19 16:35:20 Connection: closed
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Ошибка: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Ответы (2 шт):
Из логов мы узнаем, что у нас ошибка именно с подключением.
Значит следует узнать все ли параметры для отправки верны. Возможное решение:
Сменить порт.
Открываем документацию: https://help.mail.ru/mail/mailer/trouble/error
Необходимый нам порт SMTP — 465 (протокол шифрования SSL/TLS)
$mail->Port = 465;
Это особенность mail.ru. Пароль от аккаунта mail.ru можно использовать только в "родных" приложениях и браузере. Для других приложений и почтовых клиентов надо создавать отдельные пароли для авторизации.
Чтобы войти в ящик Mail.ru через почтовую программу, обычный пароль от ящика не подойдёт — вам понадобится специальный пароль для внешнего приложения Справка