Не удается подключиться к SMTP-серверу через PHP - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть веб-сайт, на котором я запрограммировал одну из своих страниц для подключения к SMTP для отправки клиентам электронной почты. Проблема начинается, когда я загружаю файлы на хост, который затем не подключается и показывает ошибку SMTP Error: Connection timed out.

На локальном хосте код работает нормально и успешно подключается к экземпляру. Что-то мне нужно изменить в коде или в настройках хоста, чтобы все работало нормально?

Используя PHPMailer, это мои переменные соединения (исключая тему, тело и т. Д.):

$mail->SMTPDebug = 2;                                 // Enable verbose debug output
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication
$mail->AuthType = 'LOGIN';
$mail->Username = 'email@gmail.com';                 // SMTP username
$mail->Password = 'mypassword';                           // SMTP password
$mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 465;                                    // TCP port to connect to
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false ) );

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Проблема начинается, когда я загружаю файлы на хост

Как вы думаете, почему загрузка файлов влияет на подключение к почтовому серверу?

$ mail-> SMTPOptions = array ('ssl' => array ('verify_peer' => false));

Это не очень хорошая идея.

Что-то мне нужно изменить в коде или в настройках хоста, чтобы оно работало нормально?

Если вы что-то измените в коде, в настройках хоста или в сетевой инфраструктуре, в которой находится хост, то он, вероятно, начнет работать (см. Примечание 1), но поскольку вы только рассказали нам о (некоторых) коде мы не можем догадаться, что это может быть.

Нередко хост, обращенный к Интернету, ограничен в своих возможностях - это может быть ограничено маршрутизацией, брандмауэрами, доступностью DNS и разрешениями. Это те вещи, которые вы должны проверять (или разговаривать с людьми, которые управляют хостом).

примечание 1: в интересах более поздних читателей - вам также может понадобиться изменить что-то на почтовом сервере - но это, вероятно, не применимо, если код работает должным образом при запуске на другой хост)

0 голосов
/ 28 апреля 2018

У вас проблема Connection timeout. Скорее всего, это связано с тем, что в вашей конфигурации что-то не так и не позволяет вашему коду подключиться к серверу SMTP Google.

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

Выполните следующее обновление, чтобы отладить и устранить проблему

$mail->SMTPDebug = 2;                                 // Enable verbose debug output
$mail->isSMTP();                                      // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;                               // Enable SMTP authentication;
$mail->Username = 'email@gmail.com';                 // SMTP username
$mail->Password = 'mypassword';                           // SMTP password
$mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587;                                    // TCP port to connect to`
`$ mail-> AuthType = 'LOGIN' $ mail-> SMTPOptions = array ('ssl' => array ('verify_peer' => false)); `

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

Для большей ясности вы можете взглянуть на их (PHPMailer) фактический документ на соединение с Google SMTP

Надеюсь, это поможет!

0 голосов
/ 27 апреля 2018
$mail->SMTPSecure = 'tls';
$mail->Port = 587; 
...