PHPMailer не возвращает ошибку, но не отправляет электронную почту (Live Server) - PullRequest
0 голосов
/ 28 февраля 2020

Я использую этот код:

<?php
require ('PHPMailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
//$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'allthingsremainhere@gmail.com';
$mail->Password = 'password';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->SetFrom('youcanreply@lishup.com', 'Reply It! - LishUp');
$mail->AddAddress('techgoeshere@gmail.com', 'Tech');
$mail->Subject  = 'First PHPMailer Message';
$mail->Body     = 'Hi! This is my first e-mail sent through PHPMailer.';

if(!$mail->send()) {
  echo 'Message was not sent.';
  echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
  echo 'Message has been sent.';
}
?>

Возвращается сообщение «Сообщение отправлено».

Мой адрес электронной почты и пароль в порядке. Это не проблема.

В учетной записи Google: авторизация 2Factor отключена и включено «Разрешить менее безопасное приложение»

Я использую Live Server, размещенный в Google Cloud. Пожалуйста, помогите мне решить эту проблему

Ответы [ 2 ]

1 голос
/ 28 февраля 2020

Прежде всего, вы используете старую версию PHPMailer. Получите последнюю версию .

Почти никто из вашего кода ничего не делает, потому что вы закомментировали isSMTP(). Это означает, что PHPMailer отправит через PHP функцию mail(), и ни одна из ваших настроек, связанных с SMTP, не будет использоваться. В результате ваше сообщение будет отправлено не через gmail, а через локальный почтовый сервер, который будет молча принимать все, что вы ему дадите, но затем не будет передавать его дальше. Если ваш отправляющий домен использует gmail, скорее всего, вы не пройдете проверку SPF и ваши сообщения никогда не будут доставлены.

Вы можете точно узнать, что произошло с вашими сообщениями, прочитав файл журнала вашего локального почтового сервера, наверное где-то вроде /var/log/mail.log.

0 голосов
/ 29 февраля 2020

здесь мы go, сначала раскомментируйте эту строку

//$mail->isSMTP();

до

$mail->isSMTP();

, затем запустите ваш код, он попытается войти в учетную запись Gmail и, если приложение будет менее безопасным он будет отправлять электронную почту, в противном случае вы будете получать оповещения по электронной почте через gmail. Если вы получили оповещение по gmail, значит, менее защищенный режим не включен, просто go, включите его и снова запустите код, и он будет работать нормально.

...