Maison >développement back-end >tutoriel php >Comment réparer « Erreur Mailer : échec de la connexion SMTP () » dans PHPmailer ?
Dépannage des échecs de SMTP Connect() dans PHPmailer
Introduction
Lors de la tentative d'envoi d'e-mails en utilisant PHPmailer, vous pourriez rencontrer l'erreur "Mailer Error: SMTP connect() failed." Ce problème est dû à la mise en œuvre par Google d'un nouveau mécanisme d'autorisation appelé XOAUTH2.
Solution
Pour résoudre ce problème, suivez ces étapes :
1. Activer les applications moins sécurisées dans le compte Google
2. Utilisez TLS sur le port 587 au lieu de SSL sur le port 465
Modifiez le code pour utiliser TLS sur le port 587 au lieu de SSL sur le port 465. Remplacez les lignes suivantes :
<code class="php">$mail->Host = "ssl://smtp.gmail.com"; $mail->Port = 465;</code>
avec :
<code class="php">$mail->Host = 'smtp.gmail.com'; $mail->Port = 587;</code>
Exemple de code
Voici le code modifié :
<code class="php">require "class.phpmailer.php"; $mail = new PHPMailer(); $mail->IsSMTP(); // send via SMTP $mail->SMTPDebug = 2; // debugging: 1 = errors and messages, 2 = messages only $mail->SMTPAuth = true; // turn on SMTP authentication $mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for GMail $mail->SMTPAutoTLS = false; $mail->Host = 'smtp.gmail.com'; $mail->Port = 587; $mail->Username = "[email protected]"; // SMTP username $mail->Password = "mypassword"; // SMTP password $webmaster_email = "[email protected]"; //Reply to this email ID $email="[email protected]"; // Recipients email ID $name="My Name"; // Recipient's name $mail->From = $webmaster_email; $mail->FromName = "My Name"; $mail->AddAddress($email,$name); $mail->AddReplyTo($webmaster_email,"My Name"); $mail->WordWrap = 50; // set word wrap $mail->IsHTML(true); // send as HTML $mail->Subject = "subject"; $mail->Body = "Hi, This is the HTML BODY "; //HTML Body $mail->AltBody = "This is the body when user views in plain text format"; //Text Body if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { echo "Message has been sent"; }</code>
En implémentant ces modifications, vous devriez pouvoir envoyer avec succès des e-mails à l'aide de PHPmailer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!