Dec 18, 2025
Faradilla A.
11menit Dibaca
Sebagian besar perusahaan memiliki akun email profesional untuk membangun kepercayaan pelanggan. Untuk membuat email tersebut, Anda perlu membeli nama domain dan menyiapkan email bisnis pada klien email atau server Anda.
Apabila memiliki website atau aplikasi web yang dibuat dengan PHP, Anda bisa mengirim email langsung dari web server Anda. Dengan PHP mail, Anda bisa membuat formulir email sendiri dan mengirim email berbasis teks dasar ke beberapa penerima.
Ada dua cara untuk mengirim email dalam PHP: menggunakan fungsi PHP mail() bawaan, atau library pengiriman email seperti PHPMailer.
Di artikel ini, kita akan membahas perbedaan PHPMailer dan fungsi mail(), serta menunjukkan cara mengirim email menggunakan keduanya.
PHP mail adalah fungsi untuk mengirim email menggunakan skrip PHP. Fungsi PHP bawaan ini bisa menargetkan beberapa penerima per pengiriman email. Namun, metode ini tidak bisa mengirim email secara massal tanpa menggunakan paket PHP mail eksternal seperti PHPMailer.
Menggunakan PHP mail, administrator website berbasis PHP bisa mengirim email dari web servernya sendiri menggunakan skrip PHP. Fungsi ini populer digunakan sebagai alternatif layanan email hosting eksternal karena terintegrasi dengan web server.
Untuk mengirim email dalam PHP, Anda bisa menggunakan fungsi mail() PHP native atau paket mailing PHP eksternal seperti PHPMailer. Berikut adalah penjelasan singkat tentang setiap metode tersebut, termasuk kelebihan dan kekurangannya:
Fungsi PHP mail()
mail() adalah fungsi PHP yang menggunakan skrip PHP untuk mengirim email sederhana. Fungsi mail mencakup tiga parameter wajib: $to, $subject, dan $message. Parameter opsional yang bisa digunakan termasuk $headers dan $parameters. Kita akan mempelajarinya secara lebih mendetail nanti.
Fungsi PHP bawaan ini menghasilkan nilai boolean ketika dijalankan, TRUE kalau server berhasil menerima email untuk dikirim, atau FALSE kalau gagal.
Kelebihan:
Kekurangan:
Penting! Bagi klien Hostinger, perlu diingat bahwa batas email yang bisa dikirim melalui PHP mail() saat ini adalah 100/hari dan 10/menit. Batas ini akan diatur ulang setiap 24 jam dan akan segera digunakan kalau ada email dalam antrean.
PHPMailer
PHPMailer adalah library pengiriman email populer yang mendukung pengiriman email melalui fungsi mail() atau server Simple Mail Transfer Protocol (SMTP). Library ini menyediakan akses ke serangkaian fungsi untuk mengirim email sehingga mempermudah konfigurasi PHP mail manual.
Keunggulan:
Kekurangan:
Penting! Apabila Anda menggunakan PHPMailer dengan Titan Mail di Hostinger, batas pengirimannya adalah 1000 email/hari dan 300 email/jam. Untuk layanan email Hostinger, batasnya lebih tinggi, yaitu hingga 3000 email/hari tanpa batas per jam. Cek parameter dan batas untuk setiap layanan karena akan berbeda-beda tergantung pada paket hosting Anda.
Di bagian ini, kita akan mempelajari cara mengirim email menggunakan PHPMailer. Sebaiknya gunakan koneksi SMTP yang diautentikasi dengan PHPMailer untuk mengoptimalkan pengiriman email Anda agar tidak terkena filter spam.
Cara menginstal PHPMailer pada dasarnya cukup mudah, terutama kalau menggunakan Composer.
Perlu diperhatikan bahwa paket web hosting Premium dan Business serta opsi cloud hosting di Hostinger sudah menyertakan dua versi Composer.
Gunakan perintah composer untuk mengaktifkan Composer versi 1.10. Apabila Anda memerlukan versi 2.0 yang baru atau menggunakan PHP versi 8.0 atau yang lebih baru, jalankan perintah composer2.

Instal PHPMailer menggunakan Composer melalui SSH agar berjalan dengan baik. Anda tidak bisa menambahkan phpmailer.php dengan kode SMTP tanpa penginstalan yang tepat. Tenang, kita akan membahasnya nanti dalam panduan ini.
Ikuti langkah-langkah berikut untuk menginstal PHPMailer secara manual:
cd public_html
composer2 require phpmailer/phpmailer

Simak tutorial kami tentang perintah SSH untuk membantu Anda mengelola server secara lebih optimal.
Untuk memahami cara kerja PHPMailer, mari pelajari setiap komponen skrip di atas.
Baris SMTPDebug = 2; hanya bisa digunakan ketika Anda menguji skrip dan ingin melihat cara kerja skrip tersebut. Jangan lupa mengubahnya menjadi SMTPDebug = 0; setelah selesai melakukan pengujian untuk mencegah penerima mendapatkan laporan pengiriman protokol SMTP.
Setelah menginstal PHPMailer, Anda bisa mulai mengirim email dalam PHP. Bagian ini akan menjelaskan cara mengirim email melalui server SMTP Hostinger menggunakan PHPMailer.
Untuk melakukannya, ikuti langkah-langkah di bawah ini:
<?php
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'smtp.hostinger.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'mymail@myawesomedomain.tld';
$mail->Password = 'My$tr0ngPa55w0rd!';
$mail->setFrom('mymail@myawesomedomain.tld', 'Your Name');
$mail->addReplyTo('mymail@myawesomedomain.tld', 'Your Name');
$mail->addAddress('recipient@domain.tld', 'Receiver Name');
$mail->Subject = 'Checking if PHPMailer works';
$mail->msgHTML(file_get_contents('message.html'), __DIR__);
$mail->Body = 'This is just a plain text message body';
//$mail->addAttachment('attachment.txt');
if (!$mail->send()) {
echo 'Mailer Error:'. $mail->ErrorInfo;
} else {
echo 'The email message was sent.';
}
?>
Apabila Anda menggunakan Titan Mail, buat koneksi melalui port 465 (SSL) atau 587 (STARTTLS). Buka Email → Konfigurasi Aplikasi Desktop untuk melihat informasi konfigurasi akun email Anda. Selain itu, Anda bisa membaca tutorial resmi Titan untuk mendapatkan informasi pengaturan SMTP, IMAP, atau POP yang benar.
Selain mengirim PHP mail sederhana, Anda juga bisa menggunakan PHPMailer untuk membuat berbagai formulir kontak, seperti survei masukan.
Seperti skrip PHP sebelumnya, buat file PHP baru di folder public_html dan beri nama formscript.php. Salin dan tempelkan skrip di bawah ini ke file baru tersebut dan ubah nilainya sesuai kebutuhan:
<?php
use PHPMailer\PHPMailer\PHPMailer;
$msg = '';
if (array_key_exists('email', $_POST)) {
require 'vendor/autoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.hostinger.com';
$mail->Port = 587;
$mail->SMTPDebug = 0;
$mail->SMTPAuth = true;
$mail->Username = 'mymail@myawesomedomain.tld';
$mail->Password = 'My$tr0ngPa55w0rd!';
$mail->setFrom('mymail@myawesomedomain.tld', 'Mr. Snuffles');
$mail->addAddress('recipient@domain.tld', 'Receiver Name');
if ($mail->addReplyTo($_POST['email'], $_POST['name'])) {
$mail->Subject = 'PHPMailer contact form';
$mail->isHTML(false);
$mail->Body = <<<EOT
Email: {$_POST['email']}
Name: {$_POST['name']}
Message: {$_POST['message']}
EOT;
if (!$mail->send()) {
$msg = 'Sorry, something went wrong. Please try again later.';
} else {
$msg = 'Message sent! Thanks for contacting us.';
}
} else {
$msg = 'Share it with us!';
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Contact form</title>
</head>
<body>
<h1>Contact us</h1>
<?php if (!empty($msg)) {
echo "<h2>$msg</h2>";
} ?>
<form method="POST">
<label for="name">Name: <input type="text" name="name" id="name"></label><br>
<label for="email">Email address: <input type="email" name="email" id="email"></label><br>
<label for="message">Message: <textarea name="message" id="message" rows="8" cols="20"></textarea></label><br>
<input type="submit" value="Send">
</form>
</body>
</html>
Tidak disarankan untuk mengambil input pengguna dari $_POST tanpa pengamanan karena bisa meningkatkan risiko serangan cross-site scripting (XSS). Guna mencegahnya, simak tips terbaik untuk mengamankan variabel PHP.
Simpan perubahan dan jalankan skrip tersebut dari web browser.
Seperti inilah hasilnya nanti:

Apabila pengunjung mengirimkan pesan melalui formulir tersebut, mereka akan mendapatkan konfirmasi. Konten formulir akan dikirim ke alamat email yang Anda masukkan di sini:
$mail->addAddress('recipient@domain.tld', 'Receiver Name');
Apabila formulir kontak PHPMailer tidak berfungsi, ubah baris $mail->SMTPDebug = 0; menjadi $mail->SMTPDebug = 2 untuk mencari tahu penyebabnya. Jangan lupa untuk menghapus baris tersebut atau mengubah angka 2 menjadi 0 setelahnya.
Kunjungi repositori resmi PHPMailer di GitHub untuk melihat contoh-contoh lain tentang cara menggunakan library pengiriman email ini.
Kalau menggunakan WordPress, Anda bisa membuat formulir dengan lebih mudah menggunakan plugin contact form seperti Formidable Forms, Contact Form 7, atau WPForms.
Cara berikutnya untuk mengirim email dari PHP secara langsung adalah dengan menggunakan fungsi mail() bawaan.
Untuk menggunakan fitur ini, pengguna yang menghosting aplikasi atau website PHP di server lokal harus mengonfigurasi program Sendmail dengan mengubah file php.ini di folder penginstalan PHP.
Apabila Anda menggunakan server hosting, Sendmail biasanya sudah dikonfigurasikan secara default. Namun, pastikan lagi bahwa provider hosting Anda mengizinkan Anda untuk mengelola opsi layanan Sendmail secara manual.
Secara default, layanan Sendmail sudah diaktifkan. Meski begitu, sebaiknya Anda mengeceknya ulang untuk memastikannya.
Penting! Titan Mail mengaktifkan fungsi PHP mail() secara default. Oleh karena itu, Anda tidak bisa mengaktifkan atau menonaktifkannya di hPanel.
Untuk membantu Anda memahami fungsi mail() PHP, kita akan mempelajari komponen-komponen skrip PHP yang digunakan di bagian sebelumnya.
ini_set( 'display_errors', 1 ); error_reporting( E_ALL );
Dua baris pertama di atas mengaktifkan pelaporan error untuk memberi tahu Anda apabila skrip PHP gagal dijalankan.
$from = "mymail@myawesomedomain.tld";
Baris ini berisi alamat email pengirim. Sebagian besar provider hosting melarang penambahan alamat email acak di bagian ini karena risiko spoofing. Jadi, sebaiknya gunakan domain yang sama dengan nama domain Anda agar skrip berhasil dijalankan.
$to = "recipient@domain.tld";
Alamat email penerima ada di sini. Pisahkan alamat email dengan tanda koma kalau Anda ingin mengirim beberapa email.
$subject = "Checking PHP mail";
Masukkan baris subjek email di sini.
$message = "PHP mail works just fine";
Di sini, masukkan isi pesan email Anda.
$headers = "From:" . $from;
Baris ini biasanya menyertakan header tambahan, seperti Dari, Balas-Ke, dan Cc. Anda bisa memisahkannya dengan CRLF.
if (mail ($to,$subject,$message,$headers))
Skrip ini menjalankan fungsi mail() dan memeriksa apakah fungsi tersebut berhasil dijalankan.
echo "The email message was sent.";
Pesan di atas akan muncul kalau fungsi mail() berhasil dijalankan.
echo "The email message was not sent.";
Sebagai alternatif, Anda akan melihat pesan ini kalau fungsi mail() gagal.
Meskipun header tambahan bersifat opsional, penting untuk menyertakan header Dariketika Anda mengirim email. Kalau tidak, Anda akan menerima notifikasi seperti ini:
Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing.
Untuk mendapatkan informasi selengkapnya tentang fungsi Sendmail dan parameternya, silakan baca dokumentasi resmi PHP.
Setelah memastikan Sendmail sudah aktif, buat file PHP mail di dalam direktori public_html.
Berikut cara melakukannya:
<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
$from = "mymail@myawesomedomain.tld";
$to = "recipient@domain.tld";
$subject = "Checking PHP mail";
$message = "PHP mail works just fine";
$headers = "From:" . $from;
if(mail($to,$subject,$message, $headers)) {
echo "The email message was sent.";
} else {
echo "The email message was not sent.";
}
?>
Fungsi PHP mail() juga bisa mengirim email HTML. Format ini bisa dikustomisasi dalam lebih banyak cara dibandingkan dengan pesan teks biasa.
Proses mengirim email HTML juga tidak jauh berbeda, Anda hanya perlu menyertakan pesan HTML dan header parameter tambahan.
Berikut contoh skrip dasar untuk mengirim email HTML:
<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
$from = "mymail@myawesomedomain.tld";
$to = "recipient@domain.tld";
$subject = "Checking PHP mail";
$message = "
<html>
<head>
<title>This is a test HTML email</title>
</head>
<body>
<p>Hi, it's a test email. Please ignore.</p>
</body>
</html>
";
// The content-type header must be set when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers = "From:" . $from;
if(mail($to,$subject,$message, $headers)) {
echo "Message was sent.";
} else {
echo "Message was not sent.";
}
?>
Kali ini, kita akan mempelajari beberapa masalah yang paling umum ketika menggunakan fungsi PHP mail() atau PHPMailer beserta cara memperbaikinya.
Error ini berarti server tidak bisa mengautentikasi pengirim menggunakan informasi yang diberikan. Untuk mengatasinya, periksa alamat email yang Anda gunakan untuk mengirim pesan, dan pastikan alamat email tersebut sesuai dengan alamat email yang ada.
Selain itu, pastikan Sender Policy Framework (SPF) Anda diaktifkan. Apabila menggunakan Hostinger, cek SPF record Anda melalui hPanel dengan membuka bagian Email → Akun Email Anda → Hubungkan Domain → Lindungi reputasi email Anda.
Apabila SPF record diaktifkan, statusnya akan ditampilkan sebagai Terhubung.
Apabila Anda melihat peringatan ini saat menguji skrip PHP mail, penyebabnya mungkin salah satu dari yang berikut ini:
Ada berbagai alasan PHP mail bisa memicu filter spam. Beberapa penyebab yang paling umum termasuk:
Versi PHP yang lebih baru biasanya memiliki prosedur SSL yang lebih ketat. Apabila fungsi PHP mail() gagal dijalankan setelah Anda mengupdate PHP ke versi terbaru, penyebabnya mungkin justru update tersebut.
Menggunakan PHPMailer dengan beberapa provider hosting juga biasanya memicu kesalahan kode ini.
Sebagai contoh, menurut wiki PHPMailer, GoDaddy memblokir koneksi SMTP keluar melalui port 25, 465, dan 587 ke server pihak ketiga seperti Gmail dan Hotmail, kecuali server mereka sendiri. Selain itu, integrasi dengan server SMTP pihak ketiga juga tidak didukung.
Gunakan skrip berikut untuk mengatasi error ini:
$mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
Penting! Hindari menerapkan perubahan ini secara global di php.ini karena akan menyebabkan koneksi yang tidak aman, yang sebenarnya telah diatasi oleh PHP sejak versi 5.6.
Karena SMTP Hostinger tidak bermasalah dalam hal ini, Anda bisa mencoba beralih ke layanan email bisnis kami untuk mengoptimalkan penggunaan email Anda.

Anda bisa mengirim email dengan PHP menggunakan fungsi mail() atau library pengiriman email seperti PHPMailer. Fungsi mail() cocok untuk mengirim pesan berbasis teks sederhana dalam jumlah kecil, sedangkan PHPMailer lebih ideal untuk mengirim email secara massal atau membuat formulir kontak.
Anda bisa memanfaatkan fungsi PHP mail bawaan dengan membuat file PHP baru di direktori public_html dan menjalankan skrip menggunakan web browser.
Di sisi lain, mengirim email dengan PHPMailer membutuhkan penginstalan library kode melalui Composer, membuat akun email untuknya, dan mengonfigurasi pengaturan SMTP hosting Anda.
Dalam tutorial ini, kami sudah membahas cara menginstal PHPMailer, membuat skrip pengujian, dan menyiapkan formulir kontak sederhana. Anda juga sudah mempelajari cara mengirim email dengan PHP mail() dan menyelesaikan error umum selama proses pengiriman email.
Mudah-mudahan, tutorial ini bermanfaat bagi Anda, ya. Apabila masih memiliki pertanyaan, silakan sampaikan lewat kolom komentar di bawah ini.
Tergantung pada provider hosting Anda. Dengan GoDaddy, Anda tidak bisa mengirim email ke kotak masuk yang menerapkan protokol autentikasi email SPF dan DKIM seperti Gmail, Yahoo, dan Hotmail. Namun, masalah ini tidak terjadi di Hostinger. Hubungi web host Anda untuk mengklarifikasi pengaturan SMTP-nya dan apakah mereka mendukung PHPMailer dengan server SMTP eksternal.
Anda bisa menggunakan fungsi filter_var () dan meneruskan alamat email ke filter FILTER_VALIDATE_EMAIL. Filter ini akan memverifikasi bahwa email valid, memastikan email tersebut tidak mengandung karakter yang tidak didukung atau spasi kosong.
Semua konten tutorial di website ini telah melalui peninjauan menyeluruh sesuai standar dan komitmen editorial Hostinger.