Ошибка SMTP Connect(). Сообщение не отправлено. Ошибка отправителя: Ошибка SMTP Connect()

Я пытаюсь отправить почту на адрес gmail, но он продолжает получать эту ошибку "SMTP → ОШИБКА: Не удалось подключиться к серверу: таймаут подключения (110) SMTP Connect() не удалось. Сообщение не было отправлено. Ошибка отправителя: Ошибка SMTP Connect()." В чем может быть проблема?

        require 'class.phpmailer.php'; // path to the PHPMailer class
        require 'class.smtp.php';

            $mail = new PHPMailer();


            $mail->IsSMTP();  // telling the class to use SMTP
            $mail->SMTPDebug = 2;
            $mail->Mailer = "smtp";
            $mail->Host = "ssl://smtp.gmail.com";
            $mail->Port = 587;
            $mail->SMTPAuth = true; // turn on SMTP authentication
            $mail->Username = "[email protected]"; // SMTP username
            $mail->Password = "mypasswword"; // SMTP password 
            $Mail->Priority = 1;

            $mail->AddAddress("[email protected]","Name");
            $mail->SetFrom($visitor_email, $name);
            $mail->AddReplyTo($visitor_email,$name);

            $mail->Subject  = "Message from  Contact form";
            $mail->Body     = $user_message;
            $mail->WordWrap = 50;  

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

Ответ 1

Удалить или прокомментировать строку -

$mail->IsSMTP();

И это сработает для вас.

Я проверил и экспериментировал много ответов с разных сайтов, но не получил никакого решения, кроме вышеупомянутого решения.

Ответ 2

Вы должны установить php_openssl.dll, если вы используете wampserver довольно легко, выполните поиск и примените расширение для PHP.

В примере измените это:

    //Set the hostname of the mail server
    $mail->Host = 'smtp.gmail.com';

    //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission 465 ssl
    $mail->Port = 465;

    //Set the encryption system to use - ssl (deprecated) or tls
    $mail->SMTPSecure = 'ssl';

а затем вы получили письмо от gmail, говорящее о том, чтобы включить возможность использования приложений с более низким безопасным доступом здесь https://www.google.com/settings/security/lesssecureapps

Я рекомендую вам менять пароль и постоянно шифровать его

Ответ 3

У вас нет настройки SMTPSecure, чтобы определить тип используемой аутентификации, и вы используете параметр Host с ненужным "ssl://" (PS - ssl - это порт 465, если вам нужно запустите его поверх ssl, см. принятый ответ здесь. Здесь строки для добавления/изменения:

+ $mail->SMTPSecure = 'tls';

- $mail->Host = "ssl://smtp.gmail.com";
+ $mail->Host = "smtp.gmail.com";

Ответ 4

Вы работаете в Localhost? и вы редактируете php.ini?

Если еще нет, попробуйте следующее:
1. Откройте xampp- > php- > php.ini
2. Поиск extension=php_openssl.dll
3. Первоначальное будет выглядеть так: ;extension=php_openssl.dll
4. Удалите ';' и это будет выглядеть так: extension=php_openssl.dll
5. Если вы не можете найти extension=php_openssl.dll, добавьте эту строку extension=php_openssl.dll.
6. Затем перезапустите Xampp.

Goodluck;)

Ответ 5

У меня была эта проблема в том, чтобы сказать, что я получаю электронное письмо от google, сообщающее мне, что кто-то пытается войти в вашу учетную запись, так это вы и я отвечаем да, тогда он начинает работать, поэтому, если это так, вы смотрите в своем письме и разрешить сервер

Ответ 6

Вот список, который вы должны изучить при работе с PHPMailer:

  • Включить openSSL, не комментируя extension=php_openssl.dll в вашем PHP.ini
  • Используйте $mail->SMTPSecure = 'tls'; и $mail->Port = 587;
  • Включить отладку, если вы ошибаетесь в другом месте, например, неправильное имя пользователя и пароль и т.д.

Ответ 7

Войдите в свою учетную запись Google на странице myaccount.google.com/security перейдите к "Вход", а затем "Безопасность", прокрутите вниз и включите "Разрешить менее безопасных приложений".

Ответ 8

Я знаю, что это было какое-то время с этого вопроса, но у меня была точная проблема и решил ее, отключив SMTP_BLOCK на csf.conf(мы используем CSF для брандмауэра).

Чтобы отключить просто отредактировать csf.conf и отключить SMTP_BLOCK следующим образом:

###############################################################################
# SECTION:SMTP Settings
###############################################################################
# Block outgoing SMTP except for root, exim and mailman (forces scripts/users
# to use the exim/sendmail binary instead of sockets access). This replaces the
# protection as WHM > Tweak Settings > SMTP Tweaks
#
# This option uses the iptables ipt_owner/xt_owner module and must be loaded
# for it to work. It may not be available on some VPS platforms
#
# Note: Run /etc/csf/csftest.pl to check whether this option will function on
# this server
# SMTP_BLOCK = "1" --> this will cause phpmailer Connection timed out (110)
SMTP_BLOCK = "0"

Ответ 9

Вы все хорошо себя чувствуете. Просто вы должны проверить разные SMTP-порты, такие как 465 и другие, которые работают в вашей системе. Еще одна вещь, которую следует иметь в виду, чтобы разрешить доступ к менее безопасным приложениям через учетную запись google, иначе она выдает ту же ошибку.
Я прошел через него целый день, и единственное, что я делаю неправильно, это номер порта. Я просто изменил порт. и он работает.

Ответ 10

Чтобы заставить его работать, мне нужно было перейти на myaccount.google.com → "связанные приложения и сайты" и включить "Разрешить менее безопасные приложения" на "ON" (в нижней части страницы).

Ответ 11

Если он работает на вашем локальном хосте, но не на вашем веб-хосте:

Некоторые хостинговые сайты блокируют определенные исходящие SMTP-порты. Комментирование строки $mail->IsSMTP();, как указано в принятом ответе, может заставить ее работать, но она просто отключает вашу конфигурацию SMTP и использует конфигурацию электронной почты хостинг-сайта.

Если вы используете GoDaddy, нет способа отправить почту с использованием другого SMTP. Я использовал SiteGround и обнаружил, что они разрешают SMTP-доступ только из портов 25 и 465 с типом шифрования SSL, поэтому я бы посмотрел документацию для вашего хоста и пошел оттуда.

Ответ 12

MailJet

Настройки SMTP

Порт: 25 или 587 (некоторые провайдеры блокируют порт 25)

Я работаю, меняя порт после развертывания приложения на сервере.

  • В Отладке это работало для меня: $mail->Port = 25;
  • В $mail->Port = 587; у меня это работало: $mail->Port = 587;

GL

Ответ 13

решение настраивает параметры gmail, доступ к безопасному приложению

Ответ 15

Это также помогло мне, когда я прокомментировал строку $mail- > IsSMTP();

Хотя не знаю, как это сделать.