Ошибка соединения SMTP()

Вопрос или проблема

Мы пытаемся настроить функцию SMTP, но постоянно сталкиваемся с ошибками при тестовой отправке электронной почты. Мы даже пробовали и WP-Mail-SMTP, и Easy WP SMTP. После общения с нашим хостингом WPEngine мы не нашли никаких проблем с их стороны, так как они используют OpenSSL и сказали нам использовать порт 2525, так как мы используем Outlook. Наши IT-специалисты также сказали, что этот порт должен работать без проблем и не заблокирован Outlook. Я даже использовал другое SMTP имя хоста: premierdisability-com.mail.protection.outlook.com. Однако оно также выдало ту же ошибку, но сообщило о тайм-ауте соединения вместо недоступности сети.

Единственный вариант, который я могу предложить, это редактирование/замена файлов class-phpmailer.php и class-smtp.php на более старую версию. Но Easy WP SMTP говорит, что он должен быть совместим с нашей настройкой WP (WP v4.8, PHP v5.6). Вы думаете, это было бы хорошим вариантом попробовать, или знаете что-то еще, что можно было бы попробовать?

 object(PHPMailer)#1882 (76) {
  ["Version"]=>
  string(6) "5.2.22"
  ["Priority"]=>
  NULL
  ["CharSet"]=>
  string(5) "UTF-8"
  ["ContentType"]=>
  string(10) "text/plain"
  ["Encoding"]=>
  string(4) "7bit"
  ["ErrorInfo"]=>
  string(82) "SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting"
  ["From"]=>
  string(34) "[email protected]"
  ["FromName"]=>
  string(27) "Premier Disability Services"
  ["Sender"]=>
  string(34) "[email protected]"
  ["ReturnPath"]=>
  string(0) ""
  ["Subject"]=>
  string(56) "WP Mail SMTP: Test mail to [email protected]"
  ["Body"]=>
  string(68) "This is a test email generated by the WP Mail SMTP WordPress plugin."
  ["AltBody"]=>
  string(0) ""
  ["Ical"]=>
  string(0) ""
  ["MIMEBody":protected]=>
  string(69) "This is a test email generated by the WP Mail SMTP WordPress plugin.
"
  ["MIMEHeader":protected]=>
  string(405) "Date: Fri, 15 Sep 2017 18:16:49 +0000
To: [email protected]
From: Premier Disability Services 
Subject: WP Mail SMTP: Test mail to [email protected]
Message-ID: <[email protected]>
X-Mailer: PHPMailer 5.2.22 (https://github.com/PHPMailer/PHPMailer)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8

"
  ["mailHeader":protected]=>
  string(0) ""
  ["WordWrap"]=>
  int(0)
  ["Mailer"]=>
  string(4) "smtp"
  ["Sendmail"]=>
  string(18) "/usr/sbin/sendmail"
  ["UseSendmailOptions"]=>
  bool(true)
  ["PluginDir"]=>
  string(0) ""
  ["ConfirmReadingTo"]=>
  string(0) ""
  ["Hostname"]=>
  string(0) ""
  ["MessageID"]=>
  string(0) ""
  ["MessageDate"]=>
  string(31) "Fri, 15 Sep 2017 18:16:49 +0000"
  ["Host"]=>
  string(18) "smtp.office365.com"
  ["Port"]=>
  string(4) "2525"
  ["Helo"]=>
  string(0) ""
  ["SMTPSecure"]=>
  string(3) "tls"
  ["SMTPAutoTLS"]=>
  bool(false)
  ["SMTPAuth"]=>
  bool(true)
  ["SMTPOptions"]=>
  array(0) {
  }
  ["Username"]=>
  string(34) "[email protected]"
  ["Password"]=>
  string(8) "*******"
  ["AuthType"]=>
  string(0) ""
  ["Realm"]=>
  string(0) ""
  ["Workstation"]=>
  string(0) ""
  ["Timeout"]=>
  int(300)
  ["SMTPDebug"]=>
  bool(true)
  ["Debugoutput"]=>
  string(4) "echo"
  ["SMTPKeepAlive"]=>
  bool(false)
  ["SingleTo"]=>
  bool(false)
  ["SingleToArray"]=>
  array(0) {
  }
  ["do_verp"]=>
  bool(false)
  ["AllowEmpty"]=>
  bool(false)
  ["LE"]=>
  string(1) "
"
  ["DKIM_selector"]=>
  string(0) ""
  ["DKIM_identity"]=>
  string(0) ""
  ["DKIM_passphrase"]=>
  string(0) ""
  ["DKIM_domain"]=>
  string(0) ""
  ["DKIM_private"]=>
  string(0) ""
  ["DKIM_private_string"]=>
  string(0) ""
  ["action_function"]=>
  string(0) ""
  ["XMailer"]=>
  string(0) ""
  ["smtp":protected]=>
  object(SMTP)#1886 (14) {
    ["Version"]=>
    string(6) "5.2.22"
    ["SMTP_PORT"]=>
    int(25)
    ["CRLF"]=>
    string(2) "
"
    ["do_debug"]=>
    bool(true)
    ["Debugoutput"]=>
    string(4) "echo"
    ["do_verp"]=>
    bool(false)
    ["Timeout"]=>
    int(300)
    ["Timelimit"]=>
    int(300)
    ["smtp_transaction_id_patterns":protected]=>
    array(3) {
      ["exim"]=>
      string(21) "/[0-9]{3} OK id=(.*)/"
      ["sendmail"]=>
      string(29) "/[0-9]{3} 2.0.0 (.*) Message/"
      ["postfix"]=>
      string(35) "/[0-9]{3} 2.0.0 Ok: queued as (.*)/"
    }
    ["smtp_conn":protected]=>
    bool(false)
    ["error":protected]=>
    array(4) {
      ["error"]=>
      string(0) ""
      ["detail"]=>
      string(0) ""
      ["smtp_code"]=>
      string(0) ""
      ["smtp_code_ex"]=>
      string(0) ""
    }
    ["helo_rply":protected]=>
    NULL
    ["server_caps":protected]=>
    NULL
    ["last_reply":protected]=>
    string(0) ""
  }
  ["to":protected]=>
  array(1) {
    [0]=>
    array(2) {
      [0]=>
      string(29) "[email protected]"
      [1]=>
      string(0) ""
    }
  }
  ["cc":protected]=>
  array(0) {
  }
  ["bcc":protected]=>
  array(0) {
  }
  ["ReplyTo":protected]=>
  array(0) {
  }
  ["all_recipients":protected]=>
  array(1) {
    ["[email protected]"]=>
    bool(true)
  }
  ["RecipientsQueue":protected]=>
  array(0) {
  }
  ["ReplyToQueue":protected]=>
  array(0) {
  }
  ["attachment":protected]=>
  array(0) {
  }
  ["CustomHeader":protected]=>
  array(0) {
  }
  ["lastMessageID":protected]=>
  string(56) "<[email protected]>"
  ["message_type":protected]=>
  string(5) "plain"
  ["boundary":protected]=>
  array(3) {
    [1]=>
    string(35) "b1_2b81fcc2a1a7b45ecfed265c6f74ed17"
    [2]=>
    string(35) "b2_2b81fcc2a1a7b45ecfed265c6f74ed17"
    [3]=>
    string(35) "b3_2b81fcc2a1a7b45ecfed265c6f74ed17"
  }
  ["language":protected]=>
  array(19) {
    ["authenticate"]=>
    string(35) "SMTP Error: Could not authenticate."
    ["connect_host"]=>
    string(43) "SMTP Error: Could not connect to SMTP host."
    ["data_not_accepted"]=>
    string(30) "SMTP Error: data not accepted."
    ["empty_message"]=>
    string(18) "Message body empty"
    ["encoding"]=>
    string(18) "Unknown encoding: "
    ["execute"]=>
    string(19) "Could not execute: "
    ["file_access"]=>
    string(23) "Could not access file: "
    ["file_open"]=>
    string(33) "File Error: Could not open file: "
    ["from_failed"]=>
    string(35) "The following From address failed: "
    ["instantiate"]=>
    string(36) "Could not instantiate mail function."
    ["invalid_address"]=>
    string(17) "Invalid address: "
    ["mailer_not_supported"]=>
    string(25) " mailer is not supported."
    ["provide_address"]=>
    string(54) "You must provide at least one recipient email address."
    ["recipients_failed"]=>
    string(45) "SMTP Error: The following recipients failed: "
    ["signing"]=>
    string(15) "Signing Error: "
    ["smtp_connect_failed"]=>
    string(22) "SMTP connect() failed."
    ["smtp_error"]=>
    string(19) "SMTP server error: "
    ["variable_set"]=>
    string(30) "Cannot set or reset variable: "
    ["extension_missing"]=>
    string(19) "Extension missing: "
  }
  ["error_count":protected]=>
  int(2)
  ["sign_cert_file":protected]=>
  string(0) ""
  ["sign_key_file":protected]=>
  string(0) ""
  ["sign_extracerts_file":protected]=>
  string(0) ""
  ["sign_key_pass":protected]=>
  string(0) ""
  ["exceptions":protected]=>
  bool(true)
  ["uniqueid":protected]=>
  string(32) "2b81fcc2a1a7b45ecfed265c6f74ed17"
}
Вывод отладки SMTP отображен ниже:

2017-09-15 18:16:49 Соединение: открытие к smtp.office365.com:2525, тайм-аут=300, options=array (
                                      )
2017-09-15 18:17:59 Соединение: Не удалось подключиться к серверу. Номер ошибки 2. "Ошибка: stream_socket_client(): не удалось подключиться к smtp.office365.com:2525 (Сеть недоступна)
2017-09-15 18:17:59 SMTP ОШИБКА: Не удалось подключиться к серверу: Сеть недоступна (101)
2017-09-15 18:17:59 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Я только что обнаружил, что у нас была эта проблема вчера. Успешно настроил mailgun этим утром. Он бесплатен для менее чем 10 000 писем в месяц.

Дважды проверьте с вашим IT-отделом, разрешают ли они вашему серверу IP подключаться через порт 2525. У меня также есть сайты на WP Engine и использую SMTP-код, который подключается к нашему внутреннему почтовому серверу и отправляет электронные письма оттуда. Однако мне пришлось белый список нашего IP-адреса сервера WP Engine в нашем фаерволе, чтобы разрешить трафик через порт 2525.

Этот вопрос немного старый, но я хотел бы поделиться своим опытом с теми, кто в настоящее время сталкивается с той же проблемой.

Моя настройка: PHP 7.4, WordPress 5.7.2, WP Mail SMTP 2.8.0

Я хотел использовать пользовательский внешний SMTP-сервер. Не спрашивайте почему. Это сложно.

Я настроил все в соответствии с инструкциями провайдера почты/хостинга, но продолжал получать ошибки "SMTP connect() failed" и "SMTP Error: Could not authenticate".

После небольших исследований и нескольких взаимосвязей с поддержкой изменение типа аутентификации AuthType в PHPMailer исправило проблему. Он по умолчанию устанавливался на "CRAM-MD5" и не работал. Переключение на "PLAIN" решило проблему. Поскольку все зашифровано, я решил, что отправка данных "PLAIN" не должна быть проблемой. Это был вопрос с моим провайдером хостинга, однако я призываю всех с такой же проблемой поэкспериментировать с AuthType.

Что-то вроде следующего в functions.php сделало исправление постоянным, чтобы я мог обновлять WordPress и его плагины без опасений:

add_filter( 'wp_mail_smtp_custom_options', function( $phpmailer ) {
    $phpmailer->AuthType="PLAIN";

    return $phpmailer;
} );

Надеюсь это поможет кому-то!

.

Ответ или решение

Ошибка "SMTP connect() failed": Полное руководство по диагностике и устранению неполадок

Если вы сталкивались с ошибкой "SMTP connect() failed", это может вызывать большое количество проблем в процессе отправки электронной почты через ваш сервер. Рассмотрим причины и решения, связанные с этой распространенной проблемой.

1. Понимание ошибки

Ошибка "SMTP connect() failed" указывает на то, что ваш код не смог установить соединение с SMTP-сервером. Это может произойти по ряду причин, включая неправильные настройки SMTP, блокировки на уровне сети или проблемы с удостоверением.

2. Проверка настроек SMTP

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

  • Хост: В вашем случае это smtp.office365.com.
  • Порт: Вы указали 2525. Хотя этот порт обычно используется для альтернативных SMTP-серверов, для Office 365 обычно используются порты 587 или 465 (для SSL). Рекомендуется попробовать использовать порт 587 с TLS.
  • Шифрование: Убедитесь, что вы используете правильный метод шифрования (TLS). Это можно проверить в настройках вашего плагина, например, WP-Mail-SMTP.
  • Логин и пароль: Убедитесь, что учетные данные для SMTP введены правильно и у пользователя есть разрешения на отправку электронной почты.

3. Проверьте блокировки со стороны хостинга или брандмауэра

Ваш хостинг-провайдер WP Engine отметил, что порты не заблокированы на их стороне, но стоит проверить следующие моменты:

  • Убедитесь, что IP-адрес вашего сервера, с которого вы отправляете почту, разрешен на локальном SMTP-сервере. Возможно, потребуется добавить IP-адрес в белый список на брандмауэре.
  • Проверьте, не блокирует ли ваш корпоративный брандмауэр соединения на порту 2525 или 587.

4. Улучшение кода PHPMailer

Из сообщения об ошибке видно, что используется PHPMailer версии 5.2.22. Рассмотрите возможность обновления до более новой версии, так как более свежие версии могут содержать правки и улучшения, которые могут решить вашу проблему. Если обновление невозможно, вы можете попробовать изменить параметры авторизации:

  • Возможно, вам стоит изменить тип авторизации на PLAIN, как рекомендовано в вашем фрагменте кода, добавив следующее в файл functions.php вашей темы:
add_filter( 'wp_mail_smtp_custom_options', function( $phpmailer ) {
    $phpmailer->AuthType = "PLAIN";
    return $phpmailer;
} );

5. Применение альтернативных SMTP-сервисов

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

Заключение

Ошибка "SMTP connect() failed" может вызывать множество затруднений, однако необходимость проверки всех настроек и конфигураций может обеспечить решение проблемы. Важно аккуратно проверить параметры сервера, а также возможности вашего хостинга. Если все равно возникнут трудности, рассмотрите лечение проблемы с технической поддержкой вашего хостинг-провайдера или переходите на надежный SMTP-клиент. Надеюсь, информацию в этом руководстве поможет вам успешно решить проблемы с отправкой электронной почты.

Оцените материал
Добавить комментарий

Капча загружается...