Fix PHPMailer yang Gagal Kirim E-mail [Need reload] [SMTP] - Andreans
News Update
Loading...

Jumat, 22 Oktober 2021

Fix PHPMailer yang Gagal Kirim E-mail [Need reload] [SMTP]

Derita bagi yang bukan seorang programmer dan suka beli script web adalah ketika ada masalah disfungsi pada bagian-bagian tertentu dalam script tersebut. Salah satunya adalah yang menjadi topik pembahasan pada artikel ini, yakni terkait PHPMailer dan SMTP. Auto bingung deh pasti.. agak panik sih, tapi saya selalu santai.

Singkat cerita, saya membeli sebuah script web yang di dalamnya terdapat fungsi verifikasi pendaftaran akun dan fitur lupa password melalui email. Otomatis ini membutuhkan SMTP, dan saya cek file .php nya menggunakan PHPMailer.

Kendalanya adalah, walau saya sudah setting SMTP nya dengan benar namun halaman verifikasi akun dan halaman lupa password tidak bisa mengirim pesan ke email pengguna meski ada notifikasi berhasil. Saya menggunakan akun tester dan cek email berkali-kali, email tak kunjung terkirim.

Dan ketika saya reload halaman verifikasi akun, lalu mencoba kirim ulang email, email pun berhasil masuk ke email pengguna yang dituju. Ini juga berlaku pada halaman lupa password, perlu reload dulu baru bisa terkirim emailnya.

smtp phpmailer not sent

Tentu ini adalah sebuah masalah, yakali pengguna harus diribetkan dengan reload halaman dahulu. Ya kalo orangnya paham? kalo ndak paham? auto dilupakan dah web Anda. Karena itu saya mencoba utak-atik kode dalam file .php nya dan cukup lega ketika berhasil walau dengan metode yang sangat simple.

Cara memperbaiki PHPMailer yang gagal kirim e-mail via SMTP, butuh waktu lama dan butuh reload.

Ini adalah hasil dari mencerna situs Mailtrap dan Stackoverflow tentang PHPMailer yang saya cocok-cocokkan dengan konfigurasi yang ada di dalam file php script milik saya. Ternyata ada yang kurang, yakni tentang perlunya penambahan kode KeepAlive pada konfigurasi SMTP nya. 

Intinya begini, pada awalnya kode mailer pada file .php tentang lupa password hanya ada kode berikut (saya ambil $mail nya aja, konten html e-mailnya ndak perlu ya) :

$mail = new PHPMailer;
$mail->IsSMTP();
$mail->SMTPSecure = 'ssl'; 
$mail->Host = "mai.hostanda.com"; //host masing2 provider email
$mail->SMTPDebug = 2;
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->Username = "mail anda"; //user email
$mail->Password = "pass anda"; //password email 
$mail->SetFrom("mail anda","nama anda"); //set email pengirim
$mail->Subject = "Lupa Kata Sandi Akun"; //subyek email
$mail->AddAddress("$email","");  //tujuan email
$mail->AddCC("email tembusan","");  //tujuan email
$mail->MsgHTML(konten html anda
if ($mail->Send());


Pada code awal tidak ada fungsi KeepAlive nya, yang ketika saya baca keluhan-keluhan pengguna yang sama kebanyakan solusinya adalah perlu KeepAlive koneksi SMTP. Sehingga kita perlu menambahkan kode berikut tepat di bawah $mail->Port :

$mail->SMTPKeepAlive = true;


Lalu menambahkan kode untuk menutupnya yakni setelah konten if  ($mail->Send()); (kontennya)) dengan kode berikut :

$mail->smtpClose();


Sehingga tampilan letak smtpClose nya kurang lebih seperti berikut :

smtp phpmailer error

Kesimpulan

Setelah saya mencoba cara tersebut, akhirnya email pun berhasil terkirim hanya dalam satu kali percobaan tanpa perlu reload atau menunggu lama. Saya juga masih belum terlalu expert urusan KeepAlive SMTP ini, yang jelas cara tersebut memang sangat berefek untuk saya jadi ya yaudah saya atur tetap seperti itu saja.

Dari yang mulanya perlu nunggu lama dan perlu reload untuk mengirim pesan melalui PHPMailer via SMTP, kini menjadi wuz wuz tanpa ini itu. 

Saya juga tidak menemukan masalah di beranda CPanel hosting saya terkait email. Saya cek semua bagian masih valid semua, jadi saya rasa aman saja. Email juga tidak masuk folder spam, tergantung kualitas hostingnya juga sih.

Jadi bagi yang suka beli script asal ke orang, jangan dimakan mentah-mentah deh gan. Perlu benar-benar dianalisa dan diuji satu persatu tiap bagian scriptnya. Semoga ada yg expert mampir dan bisa meluruskan jika yang saya sampaikan ada yang salah.

See you on the next article..


Jangan Lupa Share Gan

Give us your opinion

Hai Readers..
Terimakasih sudah menerapkan budaya membaca.
Done