it-roy-ru.com

SMTP Connect () не удалось. Сообщение не было отправлено. Ошибка почтовой программы: сбой SMTP Connect ()

Пытаюсь отправить письмо на адрес электронной почты, но он продолжает получать эту ошибку "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.';
            }
19
Sayari

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

$mail->IsSMTP();

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

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

51
Snehasis

Вы должны установить 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, в котором говорилось о включении опции «Приложения с менее безопасным доступом»here https://www.google.com/settings/security/lesssecureapps

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

9
El David

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

+ $mail->SMTPSecure = 'tls';

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

Вы работаете на 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.

Удачи ;)

4
Sendoh Akira

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

3
user5778000

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

2
user7347514

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

  1. Включите openSSL, не комментируя extension=php_openssl.dll в вашем PHP.ini
  2. Используйте $mail->SMTPSecure = 'tls'; и $mail->Port = 587;
  3. Включите отладку, если вы ошибаетесь в другом месте, например, неверное имя пользователя и пароль и т.д.
2
ɢʜʘʂʈ ʀɛɔʘɴ

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

1
deepak kumar

Я знаю, что прошло много времени с тех пор, как этот вопрос, но у меня была точная проблема, и я решил ее, отключив 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"
1
Goldbug

Чтобы заставить его работать, мне нужно было перейти на myaccount.google.com -> «Подключенные приложения и сайты» и включить «Разрешить менее безопасные приложения» в положение «ВКЛ» (в нижней части страницы).

0
Akif Hussain Sayyed

Mailjet

Настройки SMTP

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

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

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

GL

0
IT Developers

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

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

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

0
Stephanie