Cara Mengirim Email dengan PHPMailer

Mengirim email dari aplikasi PHP adalah kebutuhan umum โ€” untuk konfirmasi registrasi, reset password, notifikasi pesanan, dan banyak lagi. PHP memiliki fungsi bawaan mail(), namun...

Cara Mengirim Email dengan PHPMailer

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.

phpmailer kirim email php phpmailer smtp gmail php kirim email phpmailer composer email php native
Bagikan artikel
Kembali

Komentar (0)

Punya pertanyaan atau tambahan? Tulis di bawah โ€” tak perlu login.

Membalas komentarโ€ฆ batal

Belum ada komentar. Jadilah yang pertama!

๐Ÿš€ Partner Recommendation

Butuh Source Code & Aplikasi Premium?

Download aplikasi Laravel, POS, Sekolah, Klinik, ERP, dan source code siap pakai di GudangCode.

GudangCode
  • โœ” Source Code Premium
  • โœ” Sistem Siap Pakai
  • โœ” Lifetime Update
  • โœ” Membership Lifetime
  • โœ” Update Aplikasi Harian
Daftar Membership โ†’