Apakah kamu sedang mengalami masalah saat mengirim email menggunakan fungsi mail()
bawaan PHP di CPanel? Jangan panik! Ini bukan hanya terjadi padamu. Banyak penyedia hosting sekarang telah menonaktifkan fungsi mail()
karena alasan keamanan, terutama untuk mencegah spam. Lalu, apa solusinya? Yuk, kita bahas!
Daftar Isi
Kenapa Mail() Tidak Bisa Digunakan?
Fungsi mail()
PHP sering digunakan untuk mengirim email tanpa autentikasi. Sayangnya, hal ini menjadi celah bagi spammer untuk menyalahgunakannya. Karena itu, banyak penyedia hosting telah memblokir atau menonaktifkan fitur ini di server mereka. Tanpa autentikasi yang kuat, email yang dikirim menggunakan mail()
juga sering masuk ke folder spam penerima.
Solusi: Gunakan SMTP dengan PHPMailer
Daripada menggunakan mail()
, solusi yang lebih aman dan andal adalah dengan menggunakan SMTP (Simple Mail Transfer Protocol). SMTP memungkinkan autentikasi yang lebih kuat, sehingga email lebih terjamin sampai ke penerima tanpa masuk folder spam. Salah satu cara terbaik untuk mengirim email menggunakan SMTP adalah dengan PHPMailer.
Berikut langkah-langkah mengirim email menggunakan PHPMailer di CPanel:
1. Buat Akun Email di CPanel
Sebelum mengatur PHPMailer, kamu perlu membuat akun email yang akan digunakan sebagai autentikasi SMTP.

- Login ke CPanel
- Buka Email Accounts
- Klik Create dan buat akun email baru (misalnya:
admin@domainkamu.com
) - Catat username dan password akun email ini karena akan digunakan dalam konfigurasi PHPMailer
2. Download dan Install PHPMailer
Kamu bisa mendownload PHPMailer dari repositori resminya di GitHub atau langsung menggunakan Composer:
composer require phpmailer/phpmailer
Atau jika tanpa Composer, download langsung dari GitHub di sini dan ekstrak ke dalam folder project. Contohnya seperti ini:

3. Konfigurasi PHPMailer di PHP
Buat file send-email.php
dan tambahkan kode berikut:
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer-master/src/PHPMailer.php';
require 'PHPMailer-master/src/SMTP.php';
require 'PHPMailer-master/src/Exception.php';
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'mail.domainkamu.com'; // Sesuaikan dengan SMTP host kamu
$mail->SMTPAuth = true;
$mail->Username = 'admin@domainkamu.com'; // Email yang dibuat tadi
$mail->Password = 'passwordemail'; // Password email
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
$mail->setFrom('admin@domainkamu.com', 'Admin Website');
$mail->addAddress('penerima@email.com');
$mail->isHTML(true);
$mail->Subject = 'Tes Email SMTP';
$mail->Body = '<h1>Email Berhasil Dikirim</h1><p>Selamat, email ini dikirim menggunakan PHPMailer!</p>';
$mail->send();
echo 'Email berhasil dikirim!';
} catch (Exception $e) {
echo "Email gagal dikirim. Error: {$mail->ErrorInfo}";
}
Untuk memastikan menggunakan TLS atau SSL bisa cek dari portnya, kamu bisa klik connect device di CPanel list akun email kamu seperti di bawah ini:

Setelah diklik akan muncul seperti ini, kamu bisa cek SMTP Port di Outgoing Server:

Jika SMTP Port 465 kamu bisa menggunakan settingan seperti ini
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
Tapi kalau ternyata portnya 587 kamu bisa ganti seperti ini:
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
Tapi kebanyakan default dari CPanel adalah SSL dengan port 465.
4. Cek Inbox Penerima
Setelah itu jalankan skrip send-email.php yang sudah dibuat. Jika keluar tulisan “Email berhasil dikirim!” cek kotak masuk penerima untuk memastikan email berhasil terkirim. Jika email masuk ke folder Spam, coba tambahkan pengaturan DKIM dan SPF di CPanel untuk meningkatkan reputasi email.
5. Jika Gagal, Cek Log Pengiriman Email
Jika email gagal terkirim, periksa log error yang muncul. Beberapa hal yang bisa dicek:
- Apakah informasi SMTP sudah benar?
- Apakah port yang digunakan sudah sesuai? (587 dengan TLS, atau 465 dengan SSL)
- Apakah server menggunakan sendmail, Postfix, atau Exim untuk pengiriman email?
- Cek file error log di CPanel atau di server untuk mengetahui penyebab kegagalan.
Baca juga: Javascript Format Input NPWP
Kesimpulan
Fungsi mail()
PHP mungkin tidak bisa digunakan di hosting CPanel karena alasan keamanan. Solusinya adalah dengan menggunakan SMTP melalui PHPMailer yang lebih aman dan terpercaya. Dengan mengikuti langkah-langkah di atas, kamu bisa mengirim email dengan mudah tanpa khawatir masuk spam atau gagal terkirim.
Semoga artikel ini membantu! Jika masih mengalami kendala, coba periksa konfigurasi dan pastikan akun email SMTP sudah benar. Selamat mencoba!