it-swarm-id.com

mengirim email menggunakan server SMTP Gmail melalui PHP Pengirim

Saya ingin mengirim email menggunakan server Gmail SMTP melalui PHP Mailer.

ini kode saya

<?php
require_once('class.phpmailer.php');

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet="UTF-8";
$mail->SMTPSecure = 'tls';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->Username = '[email protected]';
$mail->Password = 'valid password';
$mail->SMTPAuth = true;

$mail->From = '[email protected]';
$mail->FromName = 'Mohammad Masoudian';
$mail->AddAddress('[email protected]');
$mail->AddReplyTo('[email protected]', 'Information');

$mail->IsHTML(true);
$mail->Subject    = "PHPMailer Test Subject via Sendmail, basic";
$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!";
$mail->Body    = "Hello";

if(!$mail->Send())
{
  echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
  echo "Message sent!";
}
?>

tetapi saya menerima kesalahan berikut ini

Mailer Error: SMTP Error: The following recipients failed: [email protected]

SMTP server error: SMTP AUTH is required for message submission on port 587

domain saya adalah vatandesign.ir

62
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for Gmail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "[email protected]";
$mail->Password = "password";
$mail->SetFrom("[email protected]");
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("[email protected]");

 if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
 } else {
    echo "Message has been sent";
 }

Kode di atas telah diuji dan berfungsi untuk saya.

Bisa jadi Anda membutuhkan $mail->SMTPSecure = 'ssl';

Pastikan juga Anda tidak mengaktifkan verifikasi dua langkah untuk akun itu karena hal itu juga dapat menyebabkan masalah.

DIPERBARUI

Anda dapat mencoba mengubah $ mail-> SMTP ke:

$mail->SMTPSecure = 'tls';

Perlu dicatat bahwa beberapa server SMTP memblokir koneksi . Beberapa server SMTP tidak mendukung koneksi SSL (atau TLS).

118
andrew-caulfield

Jadi saya baru saja memecahkan kesalahan "Koneksi SMTP" saya sendiri dan saya ingin memposting solusi untuk berjaga-jaga jika ada yang membantu orang lain.

Saya menggunakan kode EXACT yang diberikan dalam file contoh gmail.phps PHPMailer. Ini bekerja sederhana ketika saya menggunakan MAMP dan kemudian saya mendapat kesalahan koneksi SMTP setelah saya pindah ke server pribadi saya.

Semua jawaban Stack Overflow yang saya baca, dan semua dokumentasi pemecahan masalah dari PHPMailer mengatakan bahwa itu bukan masalah dengan PHPMailer. Itu adalah masalah pengaturan di sisi server. Saya mencoba berbagai port (587, 465, 25), saya mencoba enkripsi 'SSL' dan 'TLS'. Saya memeriksa apakah openssl diaktifkan di file php.ini saya. Saya memeriksa bahwa tidak ada masalah firewall. Semuanya sudah diperiksa, dan masih belum ada.

Solusinya adalah saya harus menghapus baris ini:

$mail->isSMTP();

Sekarang semuanya berfungsi. Saya tidak tahu mengapa, tetapi itu berhasil. Sisa kode saya disalin dan disisipkan dari file contoh PHPMailer.

26
Evan Butler

Juga perlu dicatat bahwa jika Anda mengaktifkan dua faktor otentikasi, Anda harus menyiapkan kata sandi khusus aplikasi untuk digunakan sebagai pengganti kata sandi akun email Anda.

Anda dapat membuat kata sandi khusus aplikasi dengan mengikuti petunjuk ini: https://support.google.com/accounts/answer/185833

Kemudian atur $mail->Password ke kata sandi khusus aplikasi Anda.

8
Tim Carr

Tampaknya server Anda gagal membuat koneksi ke server SMTP Gmail . Berikut adalah beberapa petunjuk untuk memecahkan masalah ini: 1) periksa apakah SSL dikonfigurasi dengan benar pada PHP Anda (modul yang menanganinya bukan t diinstal secara default pada PHP. Anda harus memeriksa konfigurasi Anda di phph.ini) . 2) memeriksa apakah firewall Anda membiarkan panggilan keluar ke port yang diperlukan (di sini 465 atau 587). Gunakan telnet untuk melakukannya. Jika port tidak dibuka, Anda akan memerlukan dukungan dari sysdmin untuk mengatur konfigurasi . Saya harap Anda akan menyelesaikannya dengan cepat!

5
Pr Shadoko

Buka Tautan ini dan pilih ikuti petunjuk server google memblokir upaya apa pun dari server yang tidak dikenal sehingga setelah Anda mengklik captcha periksa semuanya akan baik-baik saja 

3
Yasin Hassanien

Google memperlakukan akun Gmail secara berbeda tergantung pada informasi pengguna yang tersedia, mungkin untuk mengekang pengirim spam.

Saya tidak bisa menggunakan SMTP sampai saya melakukan verifikasi telepon. Membuat akun lain untuk memeriksa ulang dan saya dapat mengkonfirmasinya.

1
 $mail->SMTPOptions = array(
                'ssl' => array(
                    'verify_peer' => false,
                    'verify_peer_name' => false,
                    'allow_self_signed' => true
                )
            );
0
brandenM

kode ini berfungsi dengan baik untuk saya 

    $mail = new PHPMailer;
    //Enable SMTP debugging. 
    $mail->SMTPDebug = 0;
    //Set PHPMailer to use SMTP.
    $mail->isSMTP();
    //Set SMTP Host name                          
    $mail->Host = $hostname;
    //Set this to true if SMTP Host requires authentication to send email
    $mail->SMTPAuth = true;
    //Provide username and password     
    $mail->Username = $sender;
    $mail->Password = $mail_password;
    //If SMTP requires TLS encryption then set it
    $mail->SMTPSecure = "ssl";
    //Set TCP port to connect to 
    $mail->Port = 465;
    $mail->From = $sender;  
    $mail->FromName = $sender_name;
    $mail->addAddress($to);
    $mail->isHTML(true);
    $mail->Subject = $Subject;
    $mail->Body = $Body;
    $mail->AltBody = "This is the plain text version of the email content";
    if (!$mail->send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    }
    else {
           echo 'Mail Sent Successfully';
    }
0
Zohaib Hussain

Anderscc sudah benar. Terima kasih. Ini bekerja untuk saya tetapi tidak 100%. 

Saya harus mengatur

$ mail-> SMTPDebug = 0; Pengaturan ke 1, dapat menyebabkan kesalahan terutama jika Anda melewatkan beberapa data sebagai json ke halaman berikutnya. Contoh - Melakukan verifikasi jika email dikirim, menggunakan json untuk meneruskan data melalui ajax.

Saya harus menurunkan pengaturan keamanan akun gmail saya untuk menghilangkan kesalahan: "Koneksi SMTP () gagal" dan "SMTP ERROR: Perintah kata sandi gagal" 

Solusi: Masalah ini dapat disebabkan oleh aplikasi 'kurang aman' yang mencoba menggunakan akun email (ini sesuai dengan bantuan google, tidak yakin bagaimana mereka menilai mana yang aman dan apa yang tidak) OR jika Anda mencoba masuk beberapa kali berturut-turut OR jika Anda mengubah negara (misalnya menggunakan VPN, memindahkan kode ke server yang berbeda atau benar-benar mencoba masuk dari berbagai belahan dunia).

Tautan yang memperbaiki masalah (Anda harus masuk ke akun google):

Catatan: Anda dapat pergi ke tautan jawaban stackoverflow berikut untuk referensi yang lebih terperinci.

https://stackoverflow.com/a/25175234

0
Akshay P. Raul

Jika Anda menggunakan cPanel, Anda cukup mengklik kotak wee yang memungkinkan Anda mengirim ke server eksternal dengan SMTP.

Masuk ke CPanel> Pengaturan Tweak> Semua> "Batasi SMTP keluar untuk me-root, exim, dan tukang pos (FKA SMTP Tweak)"

Seperti yang dijawab di sini:

"Kata sandi tidak diterima dari server: 535 Data otentikasi salah" saat mengirim dengan GMail dan phpMailer

0
Tristanisginger