Swiftmailer: a conexão não pôde ser estabelecida com o host smtp.gmail.com

Estou postando porque já experimentei as soluções publicadas em outras questões aqui, mas elas não ajudaram.

O que estou tentando fazer é enviar e-mails usando o Swiftmailer através do Google Apps for Business Gmail, mas continuo recebendo esse erro:

A conexão não pôde ser estabelecida com o host smtp.gmail.com [Connection timed out # 110]

Eu sei que o código está bem porque ele funciona na minha máquina local, mas não no servidor de produção.

O que tentei até agora:

  • Ativado OpenSSL.
  • Conta desbloqueada do Google captcha.
  • Usou uma senha específica do aplicativo.
  • Endereços IP SMTP do Gmail da lista branca

Configuração:

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

O que mais eu posso tentar? Isso poderia ser um problema de DNS, pois estou usando os registros MX SMTP do Gmails em vez dos servidores.

Substituindo: smtp.gmail.com com 173.194.65.108 realmente funcionou para mim!

As seguintes etapas funcionaram para mim:

  1. Verifique se httpd_can_sendmail está ativado , execute este getsebool httpd_can_sendmail

    • Quando você obtém: httpd_can_sendmail -> off , execute setsebool -P httpd_can_sendmail 1
    • Quando você obtém: httpd_can_sendmail -> sobre isso, avance bem na etapa 2.
  2. Verifique se httpd_can_network_connect está ligado, execute getsebool httpd_can_network_connect

    • Quando você recebe httpd_can_network_connect -> off, execute setsebool -P httpd_can_network_connect 1
    • Quando você obtém: httpd_can_network_connect -> sobre isso, avance bem na etapa 3.
  3. Use as seguintes configurações para smtp : 'host' => '64.233.166.108' 'port' => '465'

Estou usando Centos

Se você quiser voltar a usar o Gmail, acabei de enfrentar o mesmo problema – o código funcionou na minha máquina local, mas não em um servidor real – e acho que descobri o que o causa (pelo menos no meu caso ).

Parece que, se um servidor suportar IPv6 e IPv4, o domínio do servidor se resolve como sua versão IPv6, portanto, o PHP tenta se conectar a isso. Mas eu estava descobrindo que o smtp.gmail.com não respondeu, então, após 30 segundos, o script acabou de desistir e expirou. Você pensaria que o PHP tentaria o IPv4 após o IPv6 falhar, mas não.

Então, quando eu troquei no endereço IPv4 do smtp.gmail.com (obteve ping-ing), tudo funcionou bem e o e-mail enviado. Não é ideal usar um IP no lugar de um domínio, uma vez que ele pode mudar, mas pelo menos ele economiza o desdobramento do restante do piso do servidor 🙂

basta adicionar 74.125.130.108 smtp.gmail.com no arquivo de hosts do servidor

Posicionei uma solução de solução alternativa na Swiftmailer Gmail Connection com o tempo limite # 110 onde você pode usar IPv4 ou IPv6.

Para mim, o problema foi que usei a criptografia tls, aqui estão as portas para TLS e SSL. Não se esqueça de reiniciar depois de mudar o arquivo env.

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

Além disso, você precisa alterar a segurança de sua conta do google