Fungsi bawaan mail() di PHP terkenal tidak andal — email sering masuk spam atau gagal terkirim karena tidak melalui SMTP resmi. Solusi standar industri adalah PHPMailer, pustaka yang mengirim email lewat server SMTP (seperti Gmail) sehingga jauh lebih andal. Tutorial ini membahas cara kirim email dengan PHP menggunakan PHPMailer secara lengkap.

Langkah 1: Menginstal PHPMailer
Cara termudah lewat Composer. Jalankan di folder proyek:
composer require phpmailer/phpmailer
Jika tidak memakai Composer, unduh PHPMailer dari GitHub lalu require file di folder src/ secara manual.
Langkah 2: Menyiapkan App Password Gmail
Gmail tidak mengizinkan login SMTP dengan password biasa. Anda harus membuat App Password:
- Aktifkan Verifikasi 2 Langkah di akun Google Anda.
- Buka Kelola Akun → Keamanan → Sandi Aplikasi, buat sandi baru.
- Gunakan 16 karakter yang diberikan sebagai password SMTP (bukan password akun Anda).
Langkah 3: Kode Mengirim Email
Buat file kirim.php:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require "vendor/autoload.php"; // jika pakai Composer
$mail = new PHPMailer(true);
try {
// Konfigurasi server SMTP
$mail->isSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->Username = "emailanda@gmail.com";
$mail->Password = "xxxx xxxx xxxx xxxx"; // App Password 16 karakter
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// Pengirim & penerima
$mail->setFrom("emailanda@gmail.com", "Nama Anda");
$mail->addAddress("penerima@contoh.com", "Nama Penerima");
// Isi email (HTML)
$mail->isHTML(true);
$mail->Subject = "Halo dari PHPMailer";
$mail->Body = "<h3>Halo!</h3><p>Ini email HTML dari <b>PHP</b>.</p>";
$mail->AltBody = "Halo! Ini email teks biasa dari PHP.";
$mail->send();
echo "Email berhasil dikirim!";
} catch (Exception $e) {
echo "Email gagal dikirim. Error: " . $mail->ErrorInfo;
}
?>
Penjelasan konfigurasi
- Host & Port —
smtp.gmail.comport587dengan enkripsi STARTTLS. - Username & Password — email Gmail Anda dan App Password 16 karakter.
- isHTML(true) — agar email bisa berisi format HTML;
AltBodyadalah versi teks untuk klien yang tidak mendukung HTML.
Contoh Kasus: Email Konfirmasi Pendaftaran
Pola ini sering dipakai setelah pengguna mendaftar — kirim email sambutan otomatis:
<?php $mail->addAddress($email_user); $mail->Subject = "Selamat datang di Aplikasi Kami"; $mail->Body = "Halo $nama, akun Anda berhasil dibuat!"; $mail->send(); ?>
Kesalahan Umum & Solusi
- “SMTP connect() failed” — pastikan port 587 tidak diblokir firewall, dan koneksi internet aktif.
- “Username and Password not accepted” — Anda memakai password biasa; harus App Password.
- Email masuk spam — gunakan domain pengirim yang valid dan pertimbangkan layanan SMTP profesional (Brevo, Mailgun) untuk volume besar.
- Class “PHPMailer” not found — path
autoload.phpsalah atau PHPMailer belum terinstal.
Kesimpulan
Anda telah belajar kirim email dengan PHP memakai PHPMailer lewat SMTP Gmail — jauh lebih andal daripada mail() bawaan. Gunakan App Password demi keamanan, dan untuk aplikasi berskala besar, pertimbangkan layanan SMTP khusus agar email tidak masuk spam. Kombinasikan ini dengan sistem registrasi untuk mengirim email verifikasi otomatis.
Referensi: untuk penjelasan fungsi lebih mendalam, kunjungi dokumentasi resmi PHP (php.net).

