Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah PHPmailer SMTP connect() saya gagal dengan Gmail dan bagaimana saya boleh membetulkannya?

Mengapakah PHPmailer SMTP connect() saya gagal dengan Gmail dan bagaimana saya boleh membetulkannya?

Barbara Streisand
Barbara Streisandasal
2024-10-27 04:26:03918semak imbas

Why is my PHPmailer SMTP connect() failing with Gmail and how can I fix it?

SMTP connect() failed PHPmailer - PHP

Isu ini timbul apabila anda menghadapi ralat semasa cuba menghantar e-mel menggunakan PHPmailer, khususnya "Ralat Mailer: Sambungan SMTP() gagal." Punca asas selalunya berkaitan dengan tetapan pengesahan dan keserasian dengan pembekal e-mel anda.

Dalam keadaan ini, penyelesaiannya melibatkan mendayakan apl yang kurang selamat untuk akaun Google anda. Google baru-baru ini melaksanakan pengesahan XOAUTH2, yang memerlukan anda membenarkan akses kepada aplikasi pihak ketiga secara eksplisit.

Untuk menyelesaikannya:

  • Lawati https://www.google.com/settings /security/lesssecureapps
  • Semak pilihan "Hidupkan"
  • Langkah ini membenarkan PHPmailer untuk menyambung ke pelayan SMTP Google menggunakan mekanisme XOAUTH2.

Selain itu, pastikan anda menggunakan tetapan SMTP yang betul:

  • SMTP Server: smtp.gmail.com
  • Port: 587
  • TLS: Didayakan
  • Pengesahan: Ya
  • Nama Pengguna: Alamat e-mel akaun Google anda
  • Kata Laluan: Kata laluan akaun Google anda

Berikut ialah contoh kod yang dikemas kini dengan tetapan ini:

<code class="php">require_once 'C:\xampp\htdocs\email\vendor\autoload.php';

define ('GUSER','[email&#160;protected]');
define ('GPWD','your password');

function smtpmailer($to, $from, $from_name, $subject, $body) { 
    global $error;
    $mail = new PHPMailer();  // create a new object
    $mail->IsSMTP(); // enable SMTP
    $mail->SMTPDebug = 2;  // debugging: 1 = errors and messages, 2 = messages only
    $mail->SMTPAuth = true;  // authentication enabled
    $mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for GMail
    $mail->SMTPAutoTLS = false;
    $mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;

    $mail->Username = GUSER;  
    $mail->Password = GPWD;           
    $mail->SetFrom($from, $from_name);
    $mail->Subject = $subject;
    $mail->Body = $body;
    $mail->AddAddress($to);
    if(!$mail->Send()) {
        $error = 'Mail error: '.$mail->ErrorInfo; 
        return false;
    } else {
        $error = 'Message sent!';
        return true;
    }
}</code>

Dengan mendayakan apl yang kurang selamat dan menggunakan tetapan SMTP yang betul, anda sepatutnya berjaya menghantar e-mel menggunakan PHPmailer dengan pelayan SMTP Gmail.

Atas ialah kandungan terperinci Mengapakah PHPmailer SMTP connect() saya gagal dengan Gmail dan bagaimana saya boleh membetulkannya?. 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