web-dev-qa-db-fra.com

Swiftmailer: impossible d'établir la connexion avec l'hôte smtp.gmail.com [110 minutes de connexion expirées]

Je poste parce que j'ai déjà examiné les solutions présentées dans d'autres questions, mais elles ne m'ont pas aidé.

Ce que j'essaie de faire, c'est d'envoyer un courrier électronique à l'aide de Swiftmailer via Gmail de Google Apps for Business, mais je continue à recevoir l'erreur suivante:

La connexion n'a pas pu être établie avec l'hôte smtp.gmail.com [Connexion expirée # 110]

Je sais que le code convient, car il fonctionne sur ma machine locale mais pas sur le serveur de production.

Ce que j'ai essayé jusqu'à présent:

  • Activé OpenSSL.
  • Compte non bloqué de Google captcha.
  • Utilisé un mot de passe spécifique à l'application.
  • Adresses IP SMTP Gmail inscrites sur la liste blanche

Configuration:

# Swiftmailer Configuration
swiftmailer:
    transport:  smtp
    encryption: ssl
    auth_mode:  login
    Host:       smtp.gmail.com
    username:   [email protected]
    password:   applicationspecificpassword
    port:       465

Que puis-je essayer? Cela pourrait-il être un problème de DNS puisque j'utilise les enregistrements MX SMTP de Gmails au lieu des serveurs.

16
Jonathan

Remplacer: smtp.gmail.com par 173.194.65.108 a réellement fonctionné pour moi!

10
Mohammad Anini

Les étapes suivantes ont fonctionné pour moi: 

  1. Vérifiez si httpd_can_sendmail est activé, lancez ce getsebool httpd_can_sendmail 

    • Lorsque vous obtenez: httpd_can_sendmail -> off , exécutez setsebool -P httpd_can_sendmail 1
    • Lorsque vous obtenez: httpd_can_sendmail -> on c'est très bien, passez à l'étape 2.
  2. Vérifiez également si httpd_can_network_connect est activé, exécutez getsebool httpd_can_network_connect

    • Lorsque vous obtenez httpd_can_network_connect -> off run setsebool -P httpd_can_network_connect 1
    • Lorsque vous obtenez: httpd_can_network_connect -> on c'est très bien, passez à l'étape 3.
  3. Utilisez les paramètres suivants pour smtp : 'Host' => '64.233.166.108''port' => '465'

J'utilise Centos 

8
ikuchris

Si vous souhaitez un jour revenir à l’utilisation de Gmail, je viens de faire face au même problème: le code fonctionnait sur ma machine locale mais pas sur un vrai serveur. ).

Il semble que si un serveur prend en charge IPv6 et IPv4, le domaine du serveur est résolu en version IPv6, de sorte que PHP essaie de s'y connecter. Mais je trouvais que smtp.gmail.com ne répondait pas. Après 30 secondes, le script a tout simplement abandonné et a expiré. On pourrait penser que PHP essaierait IPv4 après l’échec d’IPv6, mais non.

Ainsi, lorsque j'ai échangé l'adresse IPv4 de smtp.gmail.com (obtenu en lui envoyant une commande ping), tout a bien fonctionné et le courrier électronique a été envoyé. Ce n'est pas idéal d'utiliser une adresse IP à la place d'un domaine car cela pourrait changer, mais au moins, cela évite de déterrer le reste du plancher du serveur :)

3
gregsanderson

Pour moi, le problème était que j’avais utilisé le cryptage tls, voici les ports pour TLS et SSL. N'oubliez pas de redémarrer après avoir modifié le fichier env.

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

En outre, vous devez changer la sécurité de votre compte Google

1
Mihai

il suffit d'ajouter 74.125.130.108 smtp.gmail.comto fichier hôtes du serveur

1
dwandw

J'ai posté une solution de contournement dans Swiftmailer Gmail Connection expiré # 110 où vous pouvez utiliser IPv4 ou IPv6.

0
okki

La configuration travaille pour moi:

mailer_transport: gmail
mailer_Host: smtp.gmail.com
mailer_user: [email protected]
mailer_password: my_pass
mailer_encryption: ssl
mailer_auth_mode: login
mailer_port: 465
0
Arseniy