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
Libérer: 2024-10-27 00:03:30
original
428 Les gens l'ont consulté

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>
    Copier après la connexion

    avec :

    <code class="php">$mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;</code>
    Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal