Задача: подключить phpmailer для формы обратной связи на сайте.
Для начала решил разобраться как работает он в принципе и потом подключать к форме.
Но появилась неисчезающая проблема:
2019-09-22 19:09:21 SMTP ERROR: Failed to connect to server: (0) SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Message could not be sent. Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Перепробовал все: проверил подключен ли open_ssl, разблокировал подключение небезопасных подключений на gmail, подключал форму через два разных локальных сервера: Open Server, xampp. Пытался отправлять и с почты gmail и с почты mail.ru. Менял ssl и tls, ставил разные порты: и 465 и 578.
В одном источнике писали, что локальный сервер может конфликтовать со скайпом - скайп был отключен, проблема не пропала.
В php не силен, хотелось просто подключить данную форму, но с умом, понимая, что откуда следует.
Буду благодарен за помощь.
Код:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
$mail->SMTPKeepAlive = true;
$mail->Mailer = "smtp";
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->Host = "ssl://smtp.gmail.com";
$mail->isSMTP(); // Set mailer to use SMTP
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'h******n'; // SMTP username
$mail->Password = 'h******l'; // SMTP password
$mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = '465'; // TCP port to connect to
//Recipients
$mail->setFrom('h**********m', 'Mailer');
$mail->addAddress('s**********u', 'Joe User'); // Add a recipient
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
Ответ нашел здесь.
Нужно добавить вот такую часть кода:
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
Для Google помимо настройки PHPMailer необходимо в настройках почты отметить галочку "разрешить отправлять письма по SMTP"
По правильной настройке PHPMailer в связке с Google есть развёрнутый ответ по указанным ниже ссылкам:
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как проверить api через phpunit У меня есть api http://test/testApi/apiScanTest Она должна принимать данные
Хочу создать бд, где имеется пользователь User и его роли, у каждого пользователя, в зависимости от роли — свой личный кабинетКак правильно...