Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Membetulkan \'Ralat Mailer: SMTP connect() failed\' dalam PHPmailer?

Bagaimana untuk Membetulkan \'Ralat Mailer: SMTP connect() failed\' dalam PHPmailer?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 00:03:30383semak imbas

How to Fix

Menyelesaikan masalah SMTP Connect() Kegagalan dalam PHPmailer

Pengenalan

Apabila cuba menghantar e-mel menggunakan PHPmailer, seseorang mungkin menghadapi ralat "Ralat Mailer: SMTP connect() failed." Isu ini timbul disebabkan oleh pelaksanaan mekanisme kebenaran baharu Google yang dikenali sebagai XOAUTH2.

Penyelesaian

Untuk menyelesaikan isu ini, ikut langkah berikut:

1. Dayakan Apl Kurang Selamat dalam Akaun Google

  • Log masuk ke akaun Google anda dan navigasi ke: https://www.google.com/settings/security/lesssecureapps
  • Pastikan bahawa pilihan "Hidupkan akses untuk apl yang kurang selamat" didayakan.

2. Gunakan TLS Over Port 587 Daripada SSL Over Port 465

  • Ubah suai kod untuk menggunakan TLS melalui port 587 dan bukannya SSL melalui port 465. Gantikan baris berikut:

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

    dengan:

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

Kod Contoh

Berikut ialah kod yang diubah suai:

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

Dengan melaksanakan perubahan ini, anda sepatutnya berjaya menghantar e-mel menggunakan PHPmailer.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan \'Ralat Mailer: SMTP connect() failed\' dalam PHPmailer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn