Maison >développement back-end >tutoriel php >Comment réparer « Erreur Mailer : échec de la connexion SMTP () » dans PHPmailer ?

Comment réparer « Erreur Mailer : échec de la connexion SMTP () » dans PHPmailer ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-27 00:03:30383parcourir

How to Fix

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

  • Connectez-vous à votre compte Google et accédez à : https://www.google.com/settings/security/lesssecureapps
  • Assurer que l'option "Activer l'accès pour les applications moins sécurisées" est activée.

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&#160;protected]";        // SMTP username
$mail->Password = "mypassword";               // SMTP password
$webmaster_email = "[email&#160;protected]";       //Reply to this email ID
$email="[email&#160;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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn