Mengirim email adalah fitur umum di aplikasi web — untuk verifikasi akun, reset password, atau notifikasi. PHP menyediakan fungsi bawaan untuk PHP Kirim Email, namun ada beberapa hal penting agar email benar-benar sampai dan tidak masuk folder spam.
Fungsi mail() Bawaan
Cara paling sederhana adalah fungsi mail(), yang menerima penerima, subjek, isi, dan header:
<?php
$ke = "penerima@contoh.com";
$subjek = "Halo dari Situs Saya";
$isi = "Ini adalah email percobaan.";
$header = "From: noreply@situsku.com";
if (mail($ke, $subjek, $isi, $header)) {
echo "Email terkirim";
} else {
echo "Gagal mengirim";
}
?>
Mengirim Email Berformat HTML
Secara default email dikirim sebagai teks biasa. Untuk email berformat HTML (dengan gambar dan tautan), tambahkan header Content-Type:
<?php $header = "MIME-Version: 1.0\r\n"; $header .= "Content-Type: text/html; charset=UTF-8\r\n"; $header .= "From: noreply@situsku.com\r\n"; $isi = "<h1>Selamat Datang</h1><p>Terima kasih telah mendaftar.</p>"; mail($ke, "Pendaftaran Berhasil", $isi, $header); ?>
Masalah Utama: Email Masuk Spam
Inilah kelemahan terbesar mail(): email yang dikirim sering ditolak atau masuk folder spam. Penyebabnya, fungsi ini mengirim langsung dari server tanpa autentikasi yang meyakinkan penyedia email penerima.
Solusi: Gunakan SMTP
Untuk pengiriman yang andal, kirimlah email melalui server SMTP terautentikasi (seperti Gmail, Brevo, atau Mailgun) menggunakan pustaka PHPMailer:
<?php
use PHPMailer\PHPMailer\PHPMailer;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp-relay.brevo.com';
$mail->SMTPAuth = true;
$mail->Username = 'akun_smtp';
$mail->Password = 'sandi_smtp';
$mail->Port = 587;
$mail->setFrom('noreply@situsku.com', 'Situs Saya');
$mail->addAddress('penerima@contoh.com');
$mail->Subject = 'Halo';
$mail->Body = 'Isi email';
$mail->send();
?>
Dengan SMTP, email dikirim melalui server resmi yang tepercaya, sehingga tingkat keterkiriman jauh lebih tinggi.
Kesalahan Umum
- Mengandalkan mail() untuk produksi, lalu heran email tidak sampai.
- Alamat pengirim tidak valid, membuat email langsung ditolak.
Kesimpulan
Fungsi mail() cukup untuk uji coba, tetapi untuk PHP Kirim Email yang andal di lingkungan produksi, gunakan SMTP melalui PHPMailer. Dengan begitu, email penting seperti verifikasi dan reset password akan benar-benar sampai ke kotak masuk pengguna.
Referensi: untuk penjelasan lebih mendalam, kunjungi dokumentasi resmi PHP (php.net).

