Halo, selamat datang di Ruang Developer Blog. Bagaimana kabarnya hari ini? semoga tetap semangat belajar kodingnya ya. Pada postingan kali ini kita akan belajar bagaimana cara mengirim email menggunakan PHP.
Kemampuan aplikasi untuk mengirim email merupakan salah satu hal yang penting. Email ini biasanya berupa notifikasi pemberitahuan yang dikirimkan kepada pengguna seperti pemberitahuan keamanan, permintaan reset password, atau pemberitahuan-pemberitahuan lainnya yang bersifat transactional.
PHPMailer
PHPMailer adalah sebuah library PHP untuk mengirim email. PHPMailer menyediakan beberapa metode pengiriman email, salah satunya adalah SMTP (Simple Mail Transfer Protocol).
Untuk menggunakan PHPMailer, kamu dapat langsung mendownloadnya dari repository github atau install menggunakan composer jika aplikasi kamu menggunakan composer. Composer adalah sebuah package manager PHP yang memudahkan kamu untuk mengelola library dalam project kamu.
Menyiapkan SMTP Server
Untuk mengirim email menggunakan SMTP, kamu memerlukan SMTP server. Server ini yang akan mengirimkan email yang kamu tulis ke tujuan yang kamu tentukan. Ada sebuah tool SMTP untuk keperluan development yaitu Mailtrap. Kamu bisa membuat akun di sana dan mendapatkan informasi SMTP untuk tutorial kita kali ini.
Jika kamu memiliki SMTP server sendiri, kamu bisa menggunakannya. Kamu juga bisa menggunakan SMTP dari Google Mail, namun sepengalaman saya banyak mengalami masalah saat menggunakan SMTP dari Google Mail.
Mengirim Email Menggunakan PHPMailer
Lanjut ke bagian koding, silahkan buat folder project PHP baru dalam folder root localhost (htdocs, www, atau sejenisnya).
Pada tutorial ini kita akan menginstall PHPMailer dengan cara mendownloadnya langsung. Kamu bisa download PHPMailer pada link berikut:
https://github.com/PHPMailer/PHPMailer/archive/refs/tags/v6.6.3.zip
Setelah selesai mendownload, ekstrak isi arsip yang sudah kamu download ke dalam folder project.
Dalam folder project, buat sebuah file send.php
. Folder project kamu harusnya terlihat kurang lebih seperti berikut ini:
Dalam file send.php
buat kode seperti ini:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require './PHPMailer/src/Exception.php';
require './PHPMailer/src/PHPMailer.php';
require './PHPMailer/src/SMTP.php';
$mail = new PHPMailer(true);
Note: sesuaikan path folder milik kamu jika lokasi folder PHPMailer berbeda.
Di bawahnya, Tambahkan blok try-catch
untuk menangkap error dari Exception yang terjadi.
<?php
// kode lainnya...
try {
} catch (Exception $th) {
echo "PHPMailer Error: {$mail->ErrorInfo}";
}
Dalam blok try
tambahkan kode untuk koneksi ke server SMTP.
<?php
// kode lainnya...
try {
$mail->isSMTP();
$mail->Host = 'isi host smtp kamu';
$mail->SMTPAuth = true;
$mail->Username = 'isi username smtp kamu';
$mail->Password = 'isi password smtp kamu';
$mail->Port = 587;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
} catch (Exception $th) {
// kode lainnya...
}
Berikutnya, masih dalam blok try
, tambahkan kode untuk informasi pengiriman email.
<?php
// kode lainnya...
try {
// kode lainnya...
// Atur pengirim email
$mail->setFrom('[email protected]', 'Pengirim email keren');
// Atur penerima email
$mail->addAddress('[email protected]', 'Penerima email keren');
// Atur reply to
$mail->addReplyTo('[email protected]', 'Informasi');
// Atur cc
$mail->addCC('[email protected]', 'CC Keren');
// Atur bcc
$mail->addBCC('[email protected]', 'BCC Keren');
} catch (Exception $th) {
// kode lainnya...
}
Berikutnya, masih dalam blok try
, tambahkan kode untuk subjek, dan body email.
<?php
// kode lainnya...
try {
// kode lainnya...
// Isi email
$mail->isHTML();
// Atur subjek
$mail->Subject = 'Coba Mengirim Email';
// Atur body
$mail->Body = 'Halo ini adalah email yang dikirim dengan HTML dan <b>Huruf Tebal<b/>';
// Atur versi text untuk email
$mail->AltBody = 'Halo ini adalah email yang dikirim dengan plain text';
} catch (Exception $th) {
// kode lainnya...
}
Terakhir, dalam blok try
, tambahkan kode untuk mengirim email kita.
<?php
// kode lainnya...
try {
// kode lainnya...
// Kirim email kita
$mail->send();
echo 'Email sent...';
} catch (Exception $th) {
// kode lainnya...
}
Hasil keseluruhan dari file send.php
kita akan menjadi seperti ini.
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require './PHPMailer/src/Exception.php';
require './PHPMailer/src/PHPMailer.php';
require './PHPMailer/src/SMTP.php';
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'isi host smtp kamu';
$mail->SMTPAuth = true;
$mail->Username = 'isi username smtp kamu';
$mail->Password = 'isi password smtp kamu';
$mail->Port = 587;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
// Atur pengirim email
$mail->setFrom('[email protected]', 'Pengirim email keren');
// Atur penerima email
$mail->addAddress('[email protected]', 'Penerima email keren');
// Atur reply to
$mail->addReplyTo('[email protected]', 'Informasi');
// Atur cc
$mail->addCC('[email protected]', 'CC Keren');
// Atur bcc
$mail->addBCC('[email protected]', 'BCC Keren');
// Isi email
$mail->isHTML();
// Atur subjek
$mail->Subject = 'Coba Mengirim Email';
// Atur body
$mail->Body = 'Halo ini adalah email yang dikirim dengan HTML dan <b>Huruf Tebal<b/>';
// Atur versi text untuk email
$mail->AltBody = 'Halo ini adalah email yang dikirim dengan plain text';
// Kirim email kita
$mail->send();
echo 'Email sent...';
} catch (Exception $th) {
echo "PHPMailer Error: {$mail->ErrorInfo}";
}
Mencoba Mengirim Email
Untuk mencoba mengirim email, pastikan kamu sudah mengaktifkan localhost kamu ya. Setelah itu kamu bisa buka browser dan arahkan ke URL file send.php
.
Untuk URL project saya, kurang lebih seperti ini:
http://localhost/send-email-php/send.php
Berikut ini adalah hasil email yang saya kirimkan menggunakan PHPMailer. (Menggunakan SMTP Mailtrap).
Informasi header email sesuai dengan konfigurasi kita pada kode.
Source code untuk tutorial ini dapat kamu lihat di GitHub Ruang Developer