Banjarnegara, Jawa Tengah, Indonesia.
Tutorial Kirim Email dengan SMTP PHPMailer
Kirim Email dengan SMTP PHPMailer – Mengirim email dengan PHP di localhost biasanya kita akan menggunakan fungsi mail() bawaan dari PHP. Akan tetapi, fungsi tersebut memiliki beberapa kekurangan yakni, email yang terkirim akan masuk ke folder spam atau bahkan tidak dapat terkirim sama sekali oleh sistem.
Oleh karena itu, kita perlu bantuan dari library PHP untuk mengirim email, agar email yang kita kirim ke pengguna tidak masuk ke folder spam. Sehingga, dengan demikian tingkat email dibaca oleh pengguna akan semakin tinggi. Salah satu library yang bisa kita pakai yaitu PHPMailer. Lalu, apa itu PHPMailer? Simak penjelasannya berikut ini.
Apa Itu PHPMailer?
PHPMailer adalah sebuah library PHP yang memungkinkan kita untuk mengirim email melalui server PHP menggunakan protokol SMTP (Simple Mail Transfer Protocol). Ini berguna jika kita tidak dapat mengirim email secara langsung dari server PHP menggunakan fungsi mail() bawaan PHP.
Oleh karena itu, kirim email dengan SMTP PHPMailer tidak dapat berjalan sendiri dan masih memerlukan bantuan dari teknologi SMTP agar kita dapat mengirim email dalam format HTML, menyertakan lampiran file, atau mengirim email melalui server SMTP yang berbeda.
Apa Itu SMTP?
SMTP (Simple Mail Transfer Protocol) adalah protokol yang digunakan untuk mentransfer email dari server ke server. Ketika menggunakan aplikasi email seperti Microsoft Outlook atau Mozilla Thunderbird untuk mengirim email, aplikasi tersebut akan mengirim email ke server SMTP yang ditetapkan.
Kemudian akan mengirim email tersebut ke server email tujuan. Server SMTP akan menggunakan protokol SMTP untuk mengirim email ke server email tujuan, yang kemudian akan menyampaikan email tersebut ke aplikasi email penerima.
SMTP juga bisa digunakan untuk mengirim email dari server ke server menggunakan skrip PHP atau bahasa pemrograman lainnya.
Cara Kirim Email dengan SMTP PHPMailer
Berikut ini adalah langkah-langkah cara kirim email dengan SMTP PHPMailer sebagai pengganti fungsi mail() bawaan PHP.
Step #1: Menentukan Server SMTP
Sebelum menggunakan PHPMailer, terlebih dahulu Anda menentukan server SMTP mana yang akan Anda gunakan di PHPMailer. Banyak tersedia layanan SMTP server mail gratis maupun berbayar yang dapat digunakan.
Rekomendasi layanan SMTP server mail gratis yang bisa Anda coba diantaranya ZohoMail, Mailjet, SendGrid, Mailgun, Postals, SMTP2Go, hingga ProtonMail. Dalam tutorial ini, saya merekomendasikan Anda untuk menggunakan SMTP dari ZohoMail.
Step #2: Download PHPMailer
Selanjutnya, silahkan Anda download terlebih dahulu library PHPMailer-nya di sini. Kemudian, buat folder baru bernama PHPMailer dan ekstrak file ke dalamnya.
Step #3: Membuat Class Mailer
Setelah PHPMailer diekstrak, berikutnya silahkan buat file baru dengan nama Mailer.php dan copy pastken class PHP yang telah saya buat berikut.
<?php ini_set('display_errors', 0); ob_start(); use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; require_once 'PHPMailer/src/PHPMailer.php'; require_once 'PHPMailer/src/Exception.php'; require_once 'PHPMailer/src/OAuth.php'; require_once 'PHPMailer/src/POP3.php'; require_once 'PHPMailer/src/SMTP.php'; class Mailer { private $mail; public function __construct() { $this->mail = new PHPMailer(true); } public function setup(...$datas) { $this->mail->SMTPDebug = $datas[0]['DEBUG']; $this->mail->isSMTP(); $this->mail->Host = $datas[0]['HOST']; $this->mail->SMTPAuth = $datas[0]['AUTH']; $this->mail->Username = $datas[0]['USER']; $this->mail->Password = $datas[0]['PASS']; $this->mail->SMTPSecure = $datas[0]['SECURE']; $this->mail->Port = $datas[0]['PORT']; $this->mail->setFrom($datas[0]['FROM'], $datas[1]['SENDER']); $this->mail->addAddress($datas[1]['TO'], $datas[1]['NAME']); if(!empty($datas[1]['ATTACH'])) { $this->mail->addAttachment($datas[1]['ATTACH']); } $this->mail->isHTML(true); $this->mail->Subject = $datas[1]['SUBJECT']; $this->mail->Body = $datas[1]['MESSAGE']; $this->mail->AltBody = $datas[1]['MESSAGE']; } public function send_now() { if($this->mail->send()) { return true; } else { return false; } } } ?>
Class PHP di atas memiliki beberapa method yang dapat digunakan yang diantaranya setup() berfungsi untuk menangkap konfigurasi SMTP. Kemudian ada method send_now() untuk proses pengiriman.
Step #4: Menguji Pengiriman Email
Setelah Class Mailer telah dibuat, selanjutnya kita melakukan pengujian kirim email dengan SMTP PHPMailer. Silahkan buat file baru lagi dengan nama Kirim.php kemudian copy pastekan kode PHP berikut.
<?php ini_set('display_errors', 0); ob_start(); require_once 'Mailer.php'; $mailer = new Mailer(); $mailer->setup([ 'DEBUG' => false, 'HOST' => '', 'USER' => '', 'PASS' => '', 'SECURE' => '', 'PORT' => 587, 'FROM' => '', 'AUTH' => true, ], [ 'TO' => '', 'SUBJECT' => '', 'MESSAGE' => '', 'SENDER' => '', 'NAME' => '', 'ATTACH' => '', ]); if($mailer->send_now()) { echo 'Email terkirim!'; } else { echo 'Email gagal terkirim!'; } ?>
Sebelum menguji pengiriman, silahkan isi konfigurasi SMTP yang Anda gunakan terlebih dahulu. Simak penjelasan konfigurasi berikut ini.
- DEBUG, diisi dengan true atau false jika ingin melakukan debug.
- HOST, diisi dengan nama host SMTP.
- USER, diisi dengan username SMTP.
- PASS, diisi dengan password SMTP.
- SECURE, diisi dengan jenis koneksi SMTP.
- PORT, diisi dengan port SMTP. Pastikan sesuaikan dengan jenis koneksinya.
- FROM, diisi dengan asal pengirim email.
- AUTH, diisi dengan true atau false untuk keperluan autentikasi SMTP.
- TO, diisi dengan email tujuan pengiriman.
- SUBJECT, diisi dengan subjek email.
- MESSAGE, diisi dengan isi pesan.
- SENDER, diisi dengan nama pengirim.
- NAME, diisi dengan nama pengirim.
- ATTACH, diisi dengan URL lampiran jika ingin disertai dengan lampiran pada email.
Dikarenakan cara kirim email dengan SMTP PHPMailer berbasis internet, pastikan koneksi internet Anda aktif. Selain itu, jika pengiriman email disertai dengan lampiran maka proses pengiriman akan sedikit lebih lama.
Penutup
Kirim email dengan SMTP PHPMailer merupakan pilihan alternatif yang tepat untuk mengatasi email PHP masuk folder spam yang disebabkan oleh fungsi mail() bawaan dari PHP. Dengan menggunakan SMTP, tingkat keberhasilan dalam pengiriman dan keterbacaan email oleh penerima juga akan semakin tinggi.
Demikian artikel pada kesempatan kali ini mengenai tutorial cara kirim email dengan SMTP PHPMailer. Selamat mencoba dan semoga bermanfaat.