web-dev-qa-db-fra.com

La connexion Swift_TransportException n'a pas pu être établie avec l'hôte smtp.gmail.com

Je ne peux pas comprendre pendant toute ma vie pourquoi c'est exactement ce qui se passe. C'est exactement l'erreur que j'obtiens:

Fatal error: Uncaught exception 'Swift_TransportException' with message 'Connection  
could not be established with Host smtp.gmail.com [Connection refused #111]' in 
/home/content/38/6896038/html/test/lib/classes/Swift/Transport/StreamBuffer.php:259 
Stack trace: #0 
/home/content/38/6896038/html/test/lib/classes/Swift/Transport/StreamBuffer.php(64): 
Swift_Transport_StreamBuffer->_establishSocketConnection() #1 /home/content/38/6896038/html/test/lib/classes/Swift/Transport/AbstractSmtpTransport.php(115): Swift_Transport_StreamBuffer->initialize(Array) #2 /home/content/38/6896038/html/test/lib/classes/Swift/Mailer.php(80): Swift_Transport_AbstractSmtpTransport->start() #3 /home/content/38/6896038/html/test/contact.php(55): Swift_Mailer->send(Object(Swift_Message)) #4 {main} thrown in /home/content/38/6896038/html/test/lib/classes/Swift/Transport/StreamBuffer.php on line 259

Et le code que j'utilise est ce que j'ai obtenu à partir du tutoriel et de la lecture de ces exemples, le voici:

require_once 'lib/Swift_required.php';

$transport = Swift_MailTransport::newInstance();

// Create the Transport the call setUsername() and setPassword()
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
  ->setUsername('[email protected]')
  ->setPassword('xxx')
  ;

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

$nombre = $_POST['name'];
$apellido = $_POST['apellido'];
$email = $_POST['email'];
$telefono = $_POST['telefono'];
$title = $_POST['jobtitle'];

// Create the message
$message = Swift_Message::newInstance()

  // Give the message a subject
  ->setSubject('Nuevo applicante para: ' . $title)

  // Set the From address with an associative array
  ->setFrom(array('[email protected]' => 'no-reply'))

  // Set the To addresses with an associative array
  ->setTo('[email protected]')

  // Give it a body
  ->setBody('<html>
                <head></head>
                <body>
                    <table>
                        <tr>
                            <td>Nombre:</td><td>' . $nombre . ' ' . $apellido .'</td>
                        </tr>
                        <tr>
                            <td>Email:</td><td>' . $email . '</td>
                        </tr>
                        <tr>
                            <td>Telefono:</td><td>'. $telefono .'</td>
                        </tr>
                    </table>
                </body>
            </html>', 'text/html')

  // Optionally add any attachments
  ->attach(Swift_Attachment::fromPath($_FILES["file"]["tmp_name"])->setFilename($_FILES['file']['name']));

// Send the message
$result = $mailer->send($message);

toute aide est grandement appréciée, j'ai lu et cherché et je ne trouve pas de solution à ce problème :(

EDIT: Apparemment, c'est un problème avec gmail, j'ai changé pour un smtp différent et cela a fonctionné ..: S

23
Andres

Erreur fatale: exception non capturée 'Swift_TransportException' avec le message 'Impossible d'établir la connexion avec l'hôte smtp.gmail.com [Connexion refusée n ° 111]

La connexion refusée est un message d'erreur très explicite et clair. Cela signifie que la connexion de socket n'a pas pu être établie car l'extrémité distante a activement refusé de se connecter.

Il est très peu probable que Google bloque la connexion.

Il est très probable que votre fournisseur d'hébergement Web dispose de paramètres de pare-feu qui bloquent les connexions sortantes sur le port 465 ou bloquent le protocole SMTP vers Gmail. 465 est le "mauvais" port pour le protocole SMTP sécurisé, même s'il est souvent utilisé, et Gmail y écoute. Essayez le port 587 à la place. Si la connexion est toujours refusée, appelez votre hôte et demandez-lui ce qui se passe.

17
Charles

supprime de votre config.yml spool: { type: memory }

Ensuite, vous devrez ajouter essayer attraper comme ceci

    try{
        $mailer = $this->getMailer();
        $response = $this->getMailer()->send($message);
    }catch(\Swift_TransportException $e){
        $response = $e->getMessage() ;
    }
6
ivan.proskuryakov

J'avais le même problème lorsque j'utilisais l'hébergement Web Godaddy et je l'ai résolu en modifiant mon fichier .env en tant que,

MAIL_DRIVER=smtp
MAIL_Host=XXXX.XXXX.in
MAIL_PORT=587
MAIL_USERNAME=dexxxxx
MAIL_PASSWORD=XXXXXXXX
MAIL_ENCRYPTION=tls

Où MAIL_Host est votre nom de domaine de Godaddy, MAIL_USERNAME est votre nom d'utilisateur de Godaddy et MAIL_PASSWORD est votre mot de passe de Godaddy.

J'espère que cela peut vous aider. 

4
Amarja

tcp: 465 a été bloqué. Essayez d'ajouter de nouvelles règles de pare-feu et d'ajouter un port de règle 465. ou vérifiez 587 et modifiez le cryptage en tls.

2
Kuya A

Ma solution était de changer:

  'driver' => 'smtp',

à

 'driver' => 'mail',

Dans app/config/mail

J'espère que cela pourra aider

1
Samir Daraf

Dans mon cas, j'avais des problèmes avec le cryptage GoDaddy et SSL.

Définir le cryptage sur Null et le port sur 80 (ou tout autre port de support) a fait l'affaire.

0
Muhammad Athar

J'ai eu le même problème pendant un moment, en remplaçant: smtp.gmail.com par 173.194.65.108 fonctionnait réellement pour moi!

0
Mohammad Anini

Dans mon cas, j’utilisais Laravel 5 et j’avais oublié de modifier les paramètres globaux de messagerie dans le fichier .env situé dans le dossier racine de votre répertoire (ces variables remplacent votre configuration de messagerie)

   MAIL_DRIVER=smtp
   MAIL_Host=smtp.gmail.com
   MAIL_PORT=465
   [email protected]
   MAIL_PASSWORD=yourpassword

par défaut, le mailhost est:

   MAIL_Host=mailtraper.io

J'avais la même erreur mais ça a fonctionné pour moi.

0

tout d'abord, vérifiez le serveur SMTP gmail. vous ne devez pas autoriser l'accès à des applications moins sécurisées sans autoriser Swift mailer. Pour ce faire, connectez-vous à votre compte de messagerie. Réglez ensuite les paramètres de confidentialité, puis cliquez sur Signer et sécurité, puis sur Applications sans accès, puis sélectionnez Moins. sécurisez les applications puis essayez à nouveau le logiciel de messagerie, cela fonctionnera alors.

0
krishna Tyagi