Swiftmailer: невозможно установить соединение с узлом smtp.gmail.com

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

То, что я пытаюсь сделать, – отправить электронную почту с помощью Swiftmailer через Google Apps для бизнеса Gmail, но я продолжаю получать эту ошибку:

Не удалось установить соединение с узлом smtp.gmail.com [Время ожидания подключения – 110]

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

То, что я пробовал до сих пор:

  • Включено OpenSSL.
  • Разблокирована учетная запись из Google captcha.
  • Используется специальный пароль для приложения.
  • IP-адреса SMTP с использованием белого списка Gmail

Конфигурация:

# Swiftmailer Configuration swiftmailer: transport: smtp encryption: ssl auth_mode: login host: smtp.gmail.com username: contact@mydomain.com password: applicationspecificpassword port: 465 

Что еще я могу попробовать? Может ли это быть проблемой DNS, поскольку я использую записи Gmails SMTP MX вместо серверов.

Замена: smtp.gmail.com с 173.194.65.108 действительно сработал для меня!

Следующие шаги работали на меня:

  1. Проверьте, включен ли httpd_can_sendmail , запустите этот getsebool httpd_can_sendmail

    • Когда вы получите: httpd_can_sendmail -> off , запустите setsebool -P httpd_can_sendmail 1
    • Когда вы получите: httpd_can_sendmail -> , это прекрасное движение на шаге 2.
  2. Проверьте также, включен ли httpd_can_network_connect , запустите getsebool httpd_can_network_connect

    • Когда вы получите httpd_can_network_connect -> off, запустите setsebool -P httpd_can_network_connect 1
    • Когда вы получите: httpd_can_network_connect -> , это прекрасное движение на шаге 3.
  3. Используйте следующие настройки для smtp : 'host' => '64.233.166.108' 'port' => '465'

Я использую Centos

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

Похоже, что если сервер поддерживает IPv6 и IPv4, домен сервера разрешается как версия IPv6, поэтому PHP пытается подключиться к нему. Но я обнаружил, что smtp.gmail.com не ответил, поэтому через 30 секунд скрипт просто сдался и приурочен. Вы могли бы подумать, что PHP будет пытаться выполнить IPv4 после отказа IPv6, но нет.

Поэтому, когда я поменялся на IPv4-адрес smtp.gmail.com (полученный путем его ping-ing), все работало нормально и отправлено электронное письмо. Это не идеальный вариант использования IP-адреса вместо домена, поскольку он может меняться, но, по крайней мере, он экономит, выкапывая остальную половину серверных половиц 🙂

просто добавьте 74.125.130.108 smtp.gmail.com в файл хостов сервера

Я опубликовал обходное решение в Swiftmailer Gmail Connection, приуроченное к № 110, где вы можете использовать IPv4 или IPv6.

Для меня проблема была в том, что я использовал tls-шифрование, вот порты для TLS и SSL. Не забывайте перезагружаться после изменения файла env.

 smtp.gmail.com --- SSL --- 465 smtp.gmail.com --- StartTLS --- 587 

Кроме того, вам необходимо изменить безопасность своей учетной записи google