Mengirim email dari aplikasi PHP adalah kebutuhan umum โ untuk konfirmasi registrasi, reset password, notifikasi pesanan, dan banyak lagi. PHP memiliki fungsi bawaan mail(), namun fungsi ini sangat terbatas dan sering bermasalah dengan konfigurasi server modern. PHPMailer adalah library populer yang memudahkan pengiriman email melalui SMTP dengan dukungan autentikasi, TLS/SSL, attachment, dan HTML email.
Instalasi PHPMailer dengan Composer
Cara termudah menginstal PHPMailer adalah melalui Composer. Jika belum punya Composer, unduh di getcomposer.org. Jalankan perintah ini di folder proyek:
composer require phpmailer/phpmailer
Setelah selesai, Composer akan membuat folder vendor/ dan file composer.json. Kamu cukup menyertakan vendor/autoload.php di file PHP kamu.
Konfigurasi SMTP Gmail
Untuk menggunakan Gmail sebagai pengirim, kamu perlu mengaktifkan App Password di akun Google (bukan password Gmail biasa). Caranya: masuk ke Akun Google โ Keamanan โ Verifikasi 2 Langkah (harus aktif) โ App passwords โ buat password baru.
Mengirim Email HTML Sederhana
Berikut contoh lengkap mengirim email HTML menggunakan SMTP Gmail:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true); // true = aktifkan exception
try {
// Konfigurasi Server SMTP
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'emailkamu@gmail.com'; // email Gmail kamu
$mail->Password = 'xxxx xxxx xxxx xxxx'; // App Password (bukan password biasa)
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// Pengirim dan Penerima
$mail->setFrom('emailkamu@gmail.com', 'Nama Pengirim');
$mail->addAddress('penerima@example.com', 'Nama Penerima');
$mail->addReplyTo('balas@example.com', 'Support');
// Konten Email
$mail->isHTML(true);
$mail->CharSet = 'UTF-8';
$mail->Subject = 'Selamat Datang di Aplikasi Kami!';
$mail->Body = '<h1>Halo!</h1><p>Terima kasih telah mendaftar.</p>';
$mail->AltBody = 'Halo! Terima kasih telah mendaftar.'; // Versi teks biasa
$mail->send();
echo 'Email berhasil dikirim!';
} catch (Exception $e) {
echo "Email gagal dikirim. Error: {$mail->ErrorInfo}";
}
Menambahkan Attachment (Lampiran)
PHPMailer memudahkan penambahan file lampiran ke email:
<?php
// ... (konfigurasi SMTP sama seperti di atas)
$mail->Subject = 'Invoice Pesanan #12345';
$mail->Body = '<p>Terlampir invoice pesanan Anda.</p>';
// Tambah lampiran dari path file
$mail->addAttachment('/path/ke/file/invoice_12345.pdf', 'Invoice.pdf');
// Tambah lampiran dari string (misal: PDF yang di-generate on-the-fly)
// $mail->addStringAttachment($pdf_content, 'laporan.pdf');
$mail->send();
Membuat Template Email yang Rapi
Untuk email yang lebih profesional, pisahkan konten HTML ke variabel terpisah:
<?php
$nama_user = htmlspecialchars('Budi Santoso');
$link_verifikasi = 'https://example.com/verify?token=abc123xyz';
$html_body = <<<HTML
<!DOCTYPE html>
<html>
<body style="font-family: Arial, sans-serif; background: #f4f4f4; padding: 20px;">
<div style="background: white; padding: 30px; border-radius: 8px; max-width: 600px; margin: 0 auto;">
<h2 style="color: #333;">Verifikasi Email Kamu</h2>
<p>Halo <strong>$nama_user</strong>,</p>
<p>Klik tombol di bawah untuk memverifikasi akun kamu:</p>
<a href="$link_verifikasi"
style="background: #4CAF50; color: white; padding: 12px 24px;
text-decoration: none; border-radius: 4px; display: inline-block;">
Verifikasi Email
</a>
<p style="color: #999; font-size: 12px;">Link berlaku 24 jam.</p>
</div>
</body>
</html>
HTML;
$mail->Body = $html_body;
$mail->AltBody = "Halo $nama_user, verifikasi email kamu di: $link_verifikasi";
Tips Mengirim ke Banyak Penerima
PHPMailer mendukung beberapa cara menambah penerima:
<?php
// Penerima utama (To)
$mail->addAddress('user1@example.com', 'User Satu');
$mail->addAddress('user2@example.com'); // nama opsional
// CC (Carbon Copy) - semua penerima bisa melihat
$mail->addCC('manajer@example.com', 'Manajer');
// BCC (Blind Carbon Copy) - penerima lain tidak tahu
$mail->addBCC('arsip@example.com');
Kesimpulan
PHPMailer adalah solusi pengiriman email terbaik untuk PHP. Dengan dukungan SMTP, TLS/SSL, HTML email, attachment, dan penanganan error yang baik, PHPMailer jauh lebih handal dibanding fungsi mail() bawaan PHP. Instal melalui Composer, konfigurasikan SMTP Gmail dengan App Password, dan kamu bisa mulai mengirim email profesional dari aplikasi PHP dalam hitungan menit.