PHPMailer adalah library paling banyak digunakan untuk mengirim email dari PHP. Library ini membungkus SMTP sehingga Anda cukup mengonfigurasi host, port, dan kredensial sekali, lalu membuat dan mengirim pesan dengan API objek yang jelas. Fungsi bawaan PHP mail() terlalu terbatas (tanpa autentikasi, pelaporan kesalahan minim), itulah mengapa sebagian besar proyek memilih PHPMailer. Berikut contoh pengiriman lengkap yang bisa langsung dijalankan.
Bagaimana cara menginstal PHPMailer?
Gunakan Composer:
composer require phpmailer/phpmailer
Kemudian muat autoloader dan impor kelas yang Anda butuhkan:
<?php
require "vendor/autoload.php";
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
Bagaimana cara mengonfigurasi SMTP dan mengirim pesan?
Buat instance PHPMailer, alihkan ke mode SMTP dengan isSMTP(), lalu atur field koneksi dan pesan. Bungkus panggilan dalam try/catch agar pengiriman yang gagal dilaporkan, bukan diabaikan:
<?php
$mail = new PHPMailer(true); // true enables exceptions
try {
// Server settings
$mail->isSMTP();
$mail->Host = "smtp.example.com";
$mail->SMTPAuth = true;
$mail->Username = getenv("SMTP_USER");
$mail->Password = getenv("SMTP_PASS");
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// Recipients
$mail->setFrom("you@yourdomain.com", "Your App");
$mail->addAddress("recipient@example.org", "Recipient Name");
// Content
$mail->isHTML(true);
$mail->Subject = "Your receipt";
$mail->Body = "<p>Thanks for your order.</p>";
$mail->AltBody = "Thanks for your order. This is the plain-text version.";
$mail->send();
echo "Message sent.";
} catch (Exception $e) {
echo "Send failed: {$mail->ErrorInfo}";
}
Beberapa detail yang sering membingungkan. SMTPSecure dan Port saling terkait: gunakan ENCRYPTION_STARTTLS dengan 587, atau ENCRYPTION_SMTPS dengan 465. isHTML(true) memberi tahu PHPMailer bahwa Body adalah HTML dan mengirim AltBody sebagai alternatif teks biasa. Berikan true ke constructor agar kegagalan melempar Exception alih-alih mengembalikan false secara diam-diam.
Bagaimana cara menambahkan lampiran?
Panggil addAttachment dengan path file sebelum send():
<?php
$mail->addAttachment("./invoices/invoice-1042.pdf", "invoice.pdf");
Argumen kedua mengganti nama file sebagaimana dilihat oleh penerima. Anda bisa memanggilnya lebih dari sekali untuk beberapa lampiran.
Kirim dengan Bird
PHPMailer berkomunikasi melalui SMTP, yang berarti produksi memerlukan mail server dengan reputasi bersih, catatan autentikasi yang benar, dan tempat untuk melihat apa yang terjadi setelah pengiriman. HTTP API menghilangkan kebutuhan server tersebut. Anda mengirim JSON melalui HTTPS dan mendapatkan respons terstruktur. Dengan Bird email API pesan yang sama cukup satu panggilan:
use Bird\Bird;
$bird = new Bird(getenv("BIRD_API_KEY"));
$bird->emails->send([
"from" => "you@yourdomain.com",
"to" => "delivered@bird.dev",
"subject" => "Hello from PHP",
"html" => "<p>It works.</p>",
]);
Alamat sandbox delivered@bird.dev selalu menerima email, sehingga Anda bisa memverifikasi integrasi sebelum mengirim ke inbox sungguhan. Tanpa soket SMTP, tanpa pilihan port, tanpa reputasi yang harus Anda hangatkan sendiri.
FAQ
Mengapa tidak cukup menggunakan fungsi mail() PHP?
mail() menyerahkan pesan ke binary sendmail lokal tanpa autentikasi SMTP dan hampir tanpa pelaporan kesalahan. PHPMailer melakukan autentikasi terhadap server remote, mendukung TLS, membangun pesan multipart, dan memberi tahu Anda mengapa pengiriman gagal.
Apa perbedaan antara Body dan AltBody?
Body adalah versi HTML dan AltBody adalah fallback teks biasa. Dengan isHTML(true) diaktifkan, klien yang tidak bisa merender HTML menampilkan AltBody, yang juga membantu deliverability.
STARTTLS atau SMTPS?
ENCRYPTION_STARTTLS pada port 587 meng-upgrade koneksi biasa ke TLS, sedangkan ENCRYPTION_SMTPS pada port 465 sudah terenkripsi sejak awal. Sesuaikan pengaturan dengan port yang diharapkan mail server Anda.
PHPMailer adalah alat yang tepat ketika Anda ingin mengirim melalui SMTP dari PHP. Jika Anda lebih memilih untuk tidak mengoperasikan server sendiri, panduan mengirim email menunjukkan jalur API secara lengkap.