Mengirim Email dengan PHPMailer di Linux
Apa itu PHPMailer?
PHPMailer adalah pustaka PHP yang digunakan untuk mengirim email melalui protokol SMTP. PHPMailer sangat populer karena mendukung berbagai fitur seperti SMTP authentication, HTML email, attachment, dan lain-lain.
Pada tutorial kali ini, kita akan mempelajari cara install, konfigurasi, dan menjalankan script PHPMailer di Linux menggunakan SMTP server yang aman, serta mengatasi kendala umum seperti error sertifikat SSL.
Persiapan Awal
- Install PHP dan Composer
- Buka terminal Linux, lalu jalankan:
-
sudo apt update sudo apt install php php-cli php-mbstring unzip curl git -y curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer
-
- Buka terminal Linux, lalu jalankan:
- Buat Folder Project
-
mkdir ~/phpmailer-test && cd ~/phpmailer-test
-
- Install PHPMailer via Composer
-
composer require phpmailer/phpmailer
-
- Membuat Script PHP untuk Mengirim Email
- Buat file
sendmail.php:-
vim sendmail.php - Lalu isi dengan:
-
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'vendor/autoload.php'; $mail = new PHPMailer(true); try { // Konfigurasi SMTP $mail->isSMTP(); $mail->Host = 'smtp.datacomm.co.id'; // GANTI sesuai SMTP kamu $mail->SMTPAuth = true; $mail->Username = 'user@domain.com'; // GANTI email kamu $mail->Password = 'app-password-atau-password-biasa'; // GANTI password $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587; // Optional: untuk bypass SSL error (tidak disarankan di production) $mail->SMTPOptions = [ 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ], ]; // Email header $mail->setFrom('user@domain.com', 'Nama Pengirim'); $mail->addAddress('penerima@contoh.com', 'Nama Penerima'); $mail->addReplyTo('user@domain.com', 'Balasan'); // Konten email $mail->isHTML(true); $mail->Subject = 'Tes Kirim Email dari Linux'; $mail->Body = '<h1>Halo!</h1><p>Email ini dikirim dari PHPMailer di server Linux.</p>'; $mail->AltBody = 'Halo! Email ini dikirim dari PHPMailer di server Linux.'; $mail->send(); echo "✅ Email berhasil dikirim!\n"; } catch (Exception $e) { echo "❌ Gagal kirim email. Error: {$mail->ErrorInfo}\n"; }
-
-
- Buat file
- Jalankan Script
-
php sendmail.php - Jika berhasil, akan muncul:
-
✅ Email berhasil dikirim!
-
-
Problem Umum Saat Menggunakan PHPMailer & Solusinya
Menggunakan PHPMailer tidak selalu berjalan mulus. Berikut ini adalah beberapa masalah umum yang sering muncul, beserta solusi praktisnya:
1. SMTP Error: Could not connect to SMTP host
Penyebab:
-
Nama host salah
-
Port ditutup firewall
-
TLS/SSL tidak cocok
-
Server SMTP down
Solusi:
-
Pastikan
$mail->Hostbenar (contoh:smtp.domain.com) -
Coba ganti port 587 ↔ 465 ↔ 25
-
Uji koneksi:
atau
2. stream_socket_enable_crypto(): Peer certificate CN mismatch
Penyebab:
-
Nama host tidak cocok dengan sertifikat SSL
-
Contoh: kamu pakai
mail.domain.comtapi sertifikatnya untuksmtp.domain.com
Solusi:
-
Sesuaikan
$mail->Hostagar sama dengan CN di sertifikat (misalnya:smtp.domain.com) -
Atau jika untuk testing:
3. Invalid address / SMTP Error: Recipient address rejected
Penyebab:
-
Alamat email salah atau tidak valid
-
SMTP server menolak penerima dari domain tertentu
Solusi:
-
Periksa penulisan email penerima
-
Uji dengan alamat email lain
-
Cek apakah domain tujuan menerima email dari IP/server kamu (SPF, DNS blacklist, dll)
4. Email masuk ke spam
Penyebab:
-
Tidak ada
AltBody -
Tidak ada DKIM/SPF/DMARC
-
Konten HTML mengandung kata spam
-
Link mengandung IP address, bukan domain
Solusi:
-
Tambahkan
$mail->AltBody -
Gunakan domain pengirim yang punya SPF, DKIM, dan DMARC valid
-
Gunakan link berbasis domain, bukan IP:
-
Tes reputasi pengiriman dengan mail-tester.com
5. Error: SMTP connect() failed
Penyebab:
-
Auth gagal karena salah username/password
-
TLS/SSL setting tidak cocok
-
SMTP server menolak koneksi
Solusi:
-
Cek username & password
-
Jika pakai Gmail, gunakan App Password
-
Pastikan
$mail->SMTPSecurecocok:PHPMailer::ENCRYPTION_STARTTLS(587) atauPHPMailer::ENCRYPTION_SMTPS(465)
6. Login gagal di Gmail
Penyebab:
-
Kamu menggunakan password biasa, bukan App Password
-
Belum aktifkan 2FA
Solusi:
-
Aktifkan 2FA di akun Google
-
Buat App Password:
https://myaccount.google.com/apppasswords
7. Error: Message body empty
Penyebab:
-
Kamu hanya mengisi
$mail->Bodytapi tidak$mail->AltBody, dan HTML tidak aktif
Solusi:
-
Tambahkan:
8. Attachment tidak terkirim
Penyebab:
-
Path file salah atau file tidak bisa diakses
Solusi:
-
Pastikan file ada dan bisa dibaca:
9. SMTP Error: Data not accepted
Penyebab:
-
Server SMTP menolak isi email karena dianggap spam
Solusi:
-
Perbaiki konten email
-
Cek header email: subject jangan berlebihan, jangan pakai caps lock semua
-
Gunakan https://mail-tester.com
10. Mail terlalu lambat dikirim
Penyebab:
-
Terjadi timeout karena server lambat merespons
Solusi:
-
Tambahkan timeout:
Tips
-
Gunakan
$mail->SMTPDebug = 2;saat troubleshooting -
Cek log email server jika punya akses
-
Selalu tes dengan email eksternal (Gmail, Yahoo, ProtonMail) sebelum produksi
-
Simpan log pengiriman ke file jika perlu: bisa dibuat log email sukses/gagal

No Comments