PHP

Mengirim HTML Email dengan PHPMailer

Logo PHPMailer

Logo PHPMailer

Saat ini sudah umum untuk mengirim email dalam bentuk HTML. Jenis email ini memberikan nilai estetika yang lebih dibandingkan dengan jenis teks biasa.

Salah satu library PHP yang dapat digunakan untuk mengirim email dalam bentuk HTML adalah PHPMailer. PHPMailer telah cukup berumur dan lengkap untuk memberikan kemudahan untuk mengirimkan email.

Skrip yang saya sertakan pada artikel ini berbentuk satu skrip, jadi tidak memerlukan Composer untuk memasang PHPMailer, seperti yang diisyaratkan pada halaman instalasi PHPMailer.

Instalasi PHPMailer

Unduh PHPMailer dengan mengklik tautan Releases, klik pada tautan yang bertanda Latest, ini akan memberikan PHPMailer dengan versi terbaru. Pada saat artikel ini ditulis versi terakhir adalah versi 6.6.0. Lalu klik tautan bernama Source Code, silakan memilih antara yang menggunakan kompresi Zip atau tar.gz. Simpan berkas unduhan pada direktori yang diinginkan, sebagai contoh /var/www/proyek/vendors.

Setelah PHPMailer selesai diunduh, buka aplikasi manajemen berkas, misalnya di Windows dengan menggunakan Explorer. Pergi ke tempat Anda menaruh berkas PHPMailer, klik kanan dan ekstrak. Biasanya hasilnya akan membuat sebuah direktori berformat PHPMailer-nomor-versi, dalam hal ini PHPMailer-6.6.0. Anda tidak perlu mengutak-atik lagi berkas-berkas di dalam direktori ini.

Menggunakan Skrip

Silakan menggunakan skrip berikut dan edit sesuai dengan keperluan Anda. Tentunya unggah skrip ini ke direktori yang dapat diakses oleh Anda via peramban.

Jangan lupa untuk merubah

$emailer->SMTPDebug  = 2;

ke:

$emailer->SMTPDebug  = 0;

bila Anda telah siap menggunakan skrip ini untuk produksi.

Berikut skripnya:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

// Mulai edit dari sini

define('PATH_SYSTEM', realpath('/var/www/proyek') . '/');

$email_username = 'no-reply@namadomain.com';
$email_password = 'rahasia';
$email_host     = 'mail.namadomain.com';
$email_port     = 465;
$email_protocol = 'ssl';
$email_reply    = 'admin@namadomain.com';
$email_sendto   = 'email@tujuan.com';

// Selesai edit di sini

require PATH_SYSTEM . './vendors/PHPMailer-6.6.0/src/Exception.php';
require PATH_SYSTEM . './vendors/PHPMailer-6.6.0/src/PHPMailer.php';
require PATH_SYSTEM . './vendors/PHPMailer-6.6.0/src/SMTP.php';

$emailer = new PHPMailer();
//$emailer->SetLanguage("id", PATH_SYSTEM . './vendors/PHPMailer-6.6.0/language/');
$emailer->isSMTP();

$emailer->SMTPDebug  = 2;
$emailer->Debugoutput = 'html';
$emailer->SMTPAuth   = true;
$emailer->Host       = $email_host;
$emailer->Port       = $email_port;
$emailer->SMTPSecure = $email_protocol;
$emailer->Username   = $email_username;
$emailer->Password   = $email_password;
$emailer->AddReplyTo($email_reply, 'Email sebagai penjawab reply');
$emailer->SetFrom($email_username, 'Nama yang muncul sebagai pengirim');

// Kirim email notifikasi ke pemohon
$email_pemohon_subject = 'Tes pengiriman email, akun baru';

$email_pemohon_message  = '<!DOCTYPE html>';
$email_pemohon_message .= '<html>';
$email_pemohon_message .= '<head>';
$email_pemohon_message .= '<title>Percobaan</title>';
$email_pemohon_message .= '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
$email_pemohon_message .= '<meta http-equiv="X-UA-Compatible" content="IE=edge" />';
$email_pemohon_message .= '<meta name="viewport" content="width=device-width, initial-scale=1.0 " />';
$email_pemohon_message .= '</head><body style="margin: 0; font-family: \'Cabin\', \'Helvetica Neue\', \'Helvetica\', \'Arial\', \'sans-serif\';color: #6e7b8a;">';
$email_pemohon_message .= '<div style="background: #fff; margin: 0 auto; max-width: 550px;">';
$email_pemohon_message .= '<p style="font-size: 1.25rem; font-weight: 200; line-height: 1.5rem;">';
$email_pemohon_message .= 'Pengiriman Tes Mail Berhasil!';
$email_pemohon_message .= '</p>';

$email_pemohon_message .= "<p>Kepada YTH:</p>";
$email_pemohon_message .= "<p>Bapak/Ibu,</p>";

$email_pemohon_message .= "<p>Dengan hormat,</p>";

$email_pemohon_message .= "<p>Email adalah tes percobaan, bila Anda mendapatkan email ini, tandanya email berhasil dikirim..";

$email_pemohon_message .= "<p>NB: Bila Bapak/Ibu tidak meminta email ini, silakan mengabaikan email ini.";

$email_pemohon_message .= "<p>---<br>";
$email_pemohon_message .= "DouseWeb Mailer";

$emailer->AddAddress($email_sendto, 'Nama Tujuan');
$emailer->Subject = $email_pemohon_subject;
$emailer->IsHTML(true);
$emailer->Body = $email_pemohon_message;

if (!$emailer->Send()) {
    echo $emailer->ErrorInfo(); die;
}

echo '<hr>Mail sent success!';

Demikian artikel ini, semoga bermanfaat.

Leave a Reply