Heim  >  Artikel  >  Backend-Entwicklung  >  Wie behebt man den „Mailer-Fehler: SMTP connect() fehlgeschlagen“ in PHPmailer?

Wie behebt man den „Mailer-Fehler: SMTP connect() fehlgeschlagen“ in PHPmailer?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-27 00:03:30302Durchsuche

How to Fix

Fehlerbehebung bei SMTP Connect()-Fehlern in PHPmailer

Einführung

Beim Versuch, E-Mails zu senden Bei Verwendung von PHPmailer kann es zu der Fehlermeldung „Mailer-Fehler: SMTP connect() fehlgeschlagen“ kommen. Dieses Problem entsteht durch die Implementierung eines neuen Autorisierungsmechanismus namens XOAUTH2 durch Google.

Lösung

Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

1. Aktivieren Sie weniger sichere Apps im Google-Konto

  • Melden Sie sich bei Ihrem Google-Konto an und navigieren Sie zu: https://www.google.com/settings/security/lesssecureapps
  • Stellen Sie sicher dass die Option „Zugriff für weniger sichere Apps aktivieren“ aktiviert ist.

2. Verwenden Sie TLS über Port 587 anstelle von SSL über Port 465

  • Ändern Sie den Code, um TLS über Port 587 anstelle von SSL über Port 465 zu verwenden. Ersetzen Sie die folgenden Zeilen:

    <code class="php">$mail->Host = "ssl://smtp.gmail.com";
    $mail->Port = 465;</code>

    mit:

    <code class="php">$mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;</code>

Beispielcode

Hier ist der geänderte Code:

<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>

Durch die Implementierung dieser Änderungen sollten Sie in der Lage sein, E-Mails erfolgreich mit PHPmailer zu versenden.

Das obige ist der detaillierte Inhalt vonWie behebt man den „Mailer-Fehler: SMTP connect() fehlgeschlagen“ in PHPmailer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn