Не удается войти в Gmail через PHPMailer, несмотря на то, что для параметра Port задано значение 465 для настройки «доступа к менее защищенным приложениям» и использования «DisplayUnlockCaptcha» - PullRequest
0 голосов
/ 29 января 2020

Я пытаюсь запустить мою почтовую систему. Он отлично работал на моей локальной машине, но теперь на сервере почтовая рассылка кажется неудачной.

Мне удалось получить одно сообщение из gmail. Он сказал, что они заблокировали вход, я сказал, хорошо, это я и попробовал еще раз, но на этот раз я даже не получил сообщение об ошибке.

ОБНОВЛЕНИЕ: Я провел еще несколько исследований и обнаружил, что SMTP connect () не удалось, вот код

$mail = new PHPMailer();

$mail->isSMTP();                                            
$mail->Host       = 'smtp.gmail.com';
$mail->SMTPAuth   = true;
$mail->Username   = 'mywebsite.service@gmail.com';
$mail->Password   = 'mypassword';

// $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
// $mail->Port       = 465;

$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port       = 587;

$mail->setFrom('mywebsite.service@gmail.com', 'MyWebsite Team');
$mail->AddReplyTo( 'mywebsite.service@gmail.com', 'Contact MyWebsite Service' );
$mail->addAddress($email, $name);
$mail->isHTML(true);
$mail->Subject = "Membership, Please Verify Your Account";
$mail->Body = "Content";

if(!$mail->Send()) {
    echo "Error sending: " . $mail->ErrorInfo;
}

Как вы можете видеть, я установил порт на 456. И я также включил "доступ к менее безопасным приложениям "в моей учетной записи и использовал" DisplayUnlockCaptcha ", как описано здесь: gmail-keep-blocking-phpmailer-sign-in

Несмотря на все это, он все еще не работает ..

ОБНОВЛЕНИЕ: я пробовал порт 456 и порт 587, оба просто дают мне ошибку SMTP connect ().

Должен быть какой-то способ выяснить, почему это не работает?

1 Ответ

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

Эта комбинация не будет работать, потому что она запрашивает явный TLS для порта, который обычно ожидает неявный TLS:

$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port       = 465;

При документы на это говорят, , режим STARTTLS не будет работать на порту 465. Либо перейдите в режим SMTPS, либо измените порт, то есть выполните одно из следующих действий:

$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port       = 465;

или

$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port       = 587;
...