Mengatasi Gagal Kirim Email Pada PHPMailer

PHPMailer adalah pustaka kode untuk mengirim email paling populer bagi developer PHP. Penulis pernah membahas sekaligus memberikan tutorial penggunaan sederhana PHPMailer untuk keperluan aktivasi pendaftaran atau form registrasi memakai fasilitas mail. Silahkan lihat disini tutorialnya !

php mail

Perlu dipungkiri pula, beberapa permasalahan pun sering terjadi untuk para pengguna PHPMailer termasuk penulis sendiri. Mulai dari sistem pengiriman email tidak berjalan hingga setting pengaturan host dan smtp tidak tepat. Oleh karena itu kali ini penulis akan mencoba mengulas dan memberikan sedikit tips maupun trik untuk pembaca agar PHPMailer dapat berjalan dengan sempurna.

panahTetap Up to Date

Perlu pembaca ketahui, bahwa kode sumber PHPMailer sekarang berada di satu sumber yakni berada di Github. Silahkan cek di sini https://github.com/PHPMailer/PHPMailer. Untuk mendapatkannya bisa dengan beberapa cara :

– Composer.

Buat file composer.json di direktori home project pembaca, dan tulis kode berikut :

{
    "require": {
        "phpmailer/phpmailer": "~5.2"
    }
}

Selanjutnya jalankan perintah berikut : curl -sS https://getcomposer.org/installer | php dan selanjutnya php composer.phar install . Lihat screenshot di bawah :

PHPMailer Composer Menggunakan Ubuntu

Penggunaan Composer memang sedikit merepotkan bagi developer yang baru belajar PHP, namun sangat membantu untuk proses maintenance. Silahkan ikuti dokumentasi tentang Composer di https://getcomposer.org bila pembaca ingin mempelajarinya.

Library PHPMailer akan secara otomatis dibuat oleh Composer dan ditaruh di folder Vendor

– Clone Menggunakan Git

Terlebih dahulu pastikan Git sudah terinstall di Sistem Operasi Anda. Penulis menggunakan Ubuntu pada praktik ini.

PHPMailer berada di server Github, pembaca bisa secara langsung melakukan duplikasi library dengan menggunakan perintah

git clone https://github.com/PHPMailer/PHPMailer.git

 di home direktori project Anda.

– Download Manual

Download manual PHPMailer tersedia juga di Github, melalui link berikut https://github.com/PHPMailer/PHPMailer/archive/master.zip

panahCek Konfigurasi SMTP

Konfigurasi SMTP adalah nyawa utama agar sistem mailer berjalan. Ibaratnya, sebelum kita menggunakan mobil maka kita harus membuka kunci pintu mobil terlebih dahulu dengan kunci yang dimiliki mobil tersebut. Mobil adalah sebuah alat selayaknya PHPMailer dan kunci adalah konfigurasi SMTP Pembaca. Karena mobil tersebut telah pembaca modifikasi dan buat dengan merek sendiri, maka seyogyanya pembaca sendiri harus memiliki cara untuk membuka mobil tersebut.

Jika pembaca menggunakan fasilitas SMTP di Shared Hosting, konfigurasi umum PHPMailer adalah sebagai berikut :

// Menambahkan atau menginclude auto load PHPMailer
require 'vendor/phpmailer/PHPMailerAutoload.php';

// Membuat instance PHPMailer
$mail = new PHPMailer;
// Checking penggunaan SMTP
$mail->isSMTP();
// Mengaktifkan mode debugging PHPMailer
// 0 = untuk Production
// 1 = Pesan yang ditampilkan untuk sistem client
// 2 = Pesan yang ditampilkan mencakup sistem php dan juga kesalahan konfigurasi
$mail->SMTPDebug = 2;
// HTML debugging (Hapus jika berada di Production server)
$mail->Debugoutput = 'html';
// Setting hostname, bisa juga menggunakan Ip Address Shared Hosting Pembaca
$mail->Host = "mail.example.com";
// Port yang dipakai, Umumnya 25
$mail->Port = 25;
// Autentifikasi SMTP
$mail->SMTPAuth = true;
// Username akun email yang berada di host
$mail->Username = "yourname@example.com";
// Password akun email yang berada host
$mail->Password = "yourpassword";
// Set konfigurasi email berasal. (Akan ditampilkan di email masuk pengguna)
$mail->setFrom('from@example.com', 'First Last');
// Set alternatif untuk reply-to (Ditampilkan di email masuk pengguna)
$mail->addReplyTo('replyto@example.com', 'First Last');
// Set alamat email yang akan dikirim (Diambil secara dinamis melalui PHP. Sesuaikan !)
$mail->addAddress('whoto@example.com', 'John Doe');
// Subject
$mail->Subject = 'PHPMailer SMTP test';
// Template body email yang akan dikirim
$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
// Akan melakukan replace otomatis di <body> template
$mail->AltBody = 'This is a plain-text message body';
// Tambahan attachment gambar jika dibutuhkan
$mail->addAttachment('images/phpmailer_mini.png');
// Siap kirim !
if (!$mail->send()) {
	echo "Gagal John !";
} else {
	echo "Email Terkirim";
}

Nah, silahkan sesuaikan konfigurasi dengan parameter seperti di atas.

panahUji Coba di Hosting, Hindari Localhost !

Beberapa penyedia hosting dan bahkan semua penyedia hosting tidak akan mengizinkan konfigurasi SSL SMTP maupun Basic SMTP digunakan di tempat lain. Sederhana, hal ini karena faktor keamanan. Bayangkan apabila Pembaca memiliki sebuah rumah, kemudian kunci rumah tersebut pembaca duplikat dan pembaca bagi-bagikan ke orang lain. Apa yang terjadi ? Bukan hanya bobol, namun semua orang yang pembaca beri kunci bisa dengan mudah menduplikasinya dan bahkan diberikan ke pihak lain.

Kasus diatas biasanya diperuntukkan untuk saluran aman SSL di hosting pembaca. Jika memang terpaksa memakai localhost atau menggunakan provider hosting selain hosting email yang dipakai pun sebenarnya pembaca tetap bisa menggunakannya. Dengan syarat menggunakan Port 25 untuk SMTP.

Tapi perlu dicatat bahwa konsep dan praktik ini tidak bisa digunakan untuk semua hosting, apalagi menggunakan hosting gratis, meskipun tidak semua hosting gratis memangkas fitur web mail. Selalu gunakan hosting berbayar yang memiliki fasilitas lengkap. Dan jika ada masalah di konfigurasi SMTP, jangan sungkan untuk menanyakan langsung ke penyedia hosting. Malu bertanya sesat di kamar !

Baik, selamat mencoba dan keep coding ! 🙂

 

Muhammad K Huda

A non exhausted blogger person within fullstack engineer (spicy food), open source religion, self-taught driver and maybe you know or don't like it. Simply says, Hello from Me!

 

9 thoughts on “Mengatasi Gagal Kirim Email Pada PHPMailer

  1. Kenapa script nya ngk bisa jalan di shared hosting ya mas? sudah diset 0755
    konfigurasi sudah sesuai setting yang tertera di cpanel
    begitu alamat dipanggil “The website cannot display the page”
    Mohon petunjuknya

Leave a Reply to Muhammad K Huda Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.