web-dev-qa-db-fra.com

ERREUR SMTP PHPMailer: échec de connexion au serveur

<?php

include("class.phpmailer.php");
include("class.smtp.php");

$mail = new PHPMailer();

$mail->IsSMTP();  // telling the class to use SMTP
$mail->Mailer = "smtp";
$mail->SMTPDebug = 2;
$mail->Host = "ssl://smtp.gmail.com"; // specify main and backup server
$mail->Port = 587; // set the port to use
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->SMTPSecure = "tls";

$mail->Username = "[email protected]"; // SMTP username
$mail->Password = "password"; // SMTP password 

$mail->From = "[email protected]";
$mail->FromName = "Webmaster";

$mail->AddAddress("[email protected]");
$mail->AddReplyTo("[email protected]", "Webmaster");
$mail->IsHTML(true);

$mail->Subject  = "First PHPMailer Message";
$mail->Body     = "Hi! \n\n This is my first e-mail sent through PHPMailer.";
$mail->WordWrap = 50;

if(!$mail->Send()) {
  echo 'Message was not sent.';
  echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
  echo 'Message has been sent.';
}
?>

Il renvoie une erreur

2016-04-01 08:41:43 SMTP ERROR: Failed to connect to server: (0) 
2016-04-01 08:41:43 SMTP connect() failed. 

https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Message was not sent.Mailer error: SMTP connect() failed. 

https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

J'héberge ce php sur mon serveur local xampp. Le extension=php_openssl.dll sur php.ini n'est déjà pas recommandé.

6
Gavin

Votre configuration est peut-être incorrecte. Je crois que si vous changez votre hôte en smtp.gmail.com cela pourrait résoudre votre problème.

J'ai remarqué que vous définissez des paramètres de sécurité, mais vous souhaitez également vous connecter avec SSL.

Changement $mail->Host = "ssl://smtp.gmail.com"; en $mail->Host = "smtp.gmail.com"; et la sécurité de ssl.

De cette réponse :

$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "[email protected]";
$mail->Password = "password";
$mail->SetFrom("[email protected]");
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("[email protected]");

 if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
 } else {
    echo "Message has been sent";
 }