Cara Mengirim Email menggunakan Fungsi PHP mail()
โก Ringkasan Cerdas
PHP mail adalah fungsi bawaan yang mengirim email langsung dari skrip PHP menggunakan pengaturan SMTP server. Panduan ini mencakup sintaks dan parameter mail(), mengkonfigurasi SMTP di php.ini, membersihkan input pengguna dengan filter_var, mengirim email yang aman, dan menggunakan PHP.Mailuntuk pengiriman yang andal.

Apa itu email PHP?
PHP mail adalah fungsi bawaan PHP yang digunakan untuk mengirim email dari skrip PHP.
Fungsi surat menerima parameter berikut:
- Alamat email
- Subjek
- Pesan
- Alamat email CC atau BCC
Mengapa dan Kapan Menggunakan PHP Mail
Fungsi email berguna dalam banyak situasi:
- Ini adalah cara yang hemat biaya untuk memberi tahu pengguna tentang peristiwa penting.
- Biarkan pengguna menghubungi Anda melalui email dengan menyediakan formulir hubungi kami di situs web yang mengirimkan konten yang disediakan melalui email.
- Pengembang dapat menggunakannya untuk menerima pesan kesalahan sistem melalui email.
- Anda dapat menggunakannya untuk mengirim email ke pelanggan buletin Anda.
- Anda dapat menggunakannya untuk mengirim tautan pengaturan ulang kata sandi kepada pengguna yang lupa kata sandinya.
- Anda dapat menggunakannya untuk mengirim tautan aktivasi dan konfirmasi melalui email. Ini berguna saat mendaftarkan pengguna dan memverifikasi alamat email mereka.
Mengirim email menggunakan PHP
Fungsi mail PHP memiliki sintaks dasar sebagai berikut.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
SINI,
- โ$to_email_addressโ adalah alamat email penerima email
- โ$subjectโ adalah subjek email
- โ$messageโ adalah pesan yang akan dikirim.
- โ[$headers]โ bersifat opsional; dapat digunakan untuk menyertakan informasi seperti CC dan BCC.
- CC adalah singkatan dari carbon copy (salinan karbon). Ini digunakan ketika Anda ingin mengirim salinan kepada orang yang berkepentingan, misalnya email pengaduan yang dikirim ke perusahaan juga dapat dikirim sebagai CC ke dewan pengaduan.
- BCC adalah singkatan dari blind carbon copy (salinan karbon buta). Mirip dengan CC, tetapi alamat email yang tercantum di bagian BCC tidak akan ditampilkan kepada penerima lain.
Sederhana Mail Transmission Protokol (SMTP)
PHP mail menggunakan Simple Mail Transmission Protokol (SMTP) untuk mengirim email.
Pada server yang dihosting, pengaturan SMTP sudah diatur sebelumnya.
Pengaturan email SMTP dapat dikonfigurasi dari file โphp.iniโ di folder instalasi PHP.
Untuk mengkonfigurasi pengaturan SMTP di localhost Anda, dengan asumsi Anda menggunakan XAMPP. WindowsCari file โphp.iniโ di direktori โC:\xampp\phpโ.
- Buka menggunakan Notepad atau editor teks lainnya. Kita akan menggunakan Notepad dalam contoh ini. Klik menu Edit.
- Klik pada menu Temukanโฆ
- Dialog Pencarian akan muncul.
- Klik tombol Temukan Berikutnya
Temukan entri di bawah [fungsi email]. Baris default biasanya terlihat seperti ini:
- ; SMTP = host lokal
- ; smtp_port = 25
Hapus tanda titik koma sebelum SMTP dan smtp_port, dan atur SMTP ke port Anda. Server SMTP dan port ke port SMTP Anda. Pengaturan Anda seharusnya terlihat seperti berikut:
- SMTP = smtp.example.com
- smtp_port = 25
Catatan: pengaturan SMTP dapat diperoleh dari penyedia hosting web Anda. Jika server memerlukan otentikasi, tambahkan baris berikut:
- auth_username = contoh_namapengguna@example.com
- auth_password = contoh_password
Simpan perubahan baru dan mulai ulang. Apache Server.
PHP Mail Example
Sekarang mari kita lihat contoh pengiriman email sederhana.
<?php $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; mail($to_email,$subject,$message,$headers); ?>
Keluaran:
Catatan: contoh di atas hanya menggunakan 4 parameter wajib. Anda harus mengganti alamat email fiktif di atas dengan alamat email yang sebenarnya.
Membersihkan masukan pengguna email
Contoh di atas menggunakan nilai-nilai yang dikodekan secara kaku dalam kode sumber untuk alamat email dan rincian lainnya demi kesederhanaan.
Mari kita asumsikan Anda harus membuat formulir kontak di mana pengguna mengisi detail dan kemudian mengirimkannya.
- Pengguna dapat secara tidak sengaja atau sengaja menyisipkan kode di header, yang dapat mengakibatkan pengiriman email spam.
- Untuk melindungi sistem Anda dari serangan semacam itu, Anda dapat membuat fungsi khusus yang membersihkan dan memvalidasi nilai sebelum email dikirim.
Mari kita buat fungsi khusus yang memvalidasi dan membersihkan alamat email menggunakan fungsi bawaan filter_var. Fungsi filter_var digunakan untuk membersihkan dan memvalidasi data input pengguna.
Ia memiliki sintaksis dasar sebagai berikut.
<?php filter_var($field, SANITIZATION_TYPE); ?>
SINI,
- โfilter_var(โฆ)โ adalah fungsi validasi dan sanitasi
- โ$fieldโ adalah nilai bidang yang akan difilter.
- โSANITIZATION_TYPEโ adalah jenis sanitasi yang akan dilakukan pada lapangan, seperti:
- FILTER_VALIDASI_EMAIL โ Mengembalikan nilai true untuk alamat email yang valid dan false untuk alamat email yang tidak valid.
- FILTER_SANITASI_EMAIL โ Menghapus karakter ilegal dari alamat email, sehingga alamat dengan karakter yang tidak diinginkan akan disingkat menjadi info@domain.com.
- FILTER_SANITASI_URL โ menghapus karakter ilegal dari URLs, sehingga meninggalkan alamat yang bersih seperti https://www.example.com.
- FILTER_SANITIZE_STRING โ Menghapus tag dari nilai string, sehingga am bold menjadi am bold. Perhatikan bahwa filter ini sudah usang di PHP 8.1; gunakan htmlspecialchars() sebagai gantinya.
Kode di bawah ini menggunakan fungsi khusus untuk mengirim email yang aman.
<?php function sanitize_my_email($field) { $field = filter_var($field, FILTER_SANITIZE_EMAIL); if (filter_var($field, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } } $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; // check if the email address is invalid $secure_check = sanitize_my_email($to_email); if ($secure_check == false) { echo "Invalid input"; } else { // send email mail($to_email, $subject, $message, $headers); echo "This email is sent using PHP Mail"; } ?>
Keluaran:
Aman Mail
Email dapat disadap selama pengiriman oleh penerima yang tidak dituju.
Hal ini dapat mengungkap isi email kepada penerima yang tidak diinginkan.
Surat elektronik yang aman mengatasi masalah ini dengan cara: transmitMengirim email melalui koneksi terenkripsi menggunakan SSL atau TLS, misalnya SMTP melalui SSL pada port 465 atau STARTTLS pada port 587.
Enkripsi mengacak pesan sebelum dikirim, sehingga hanya server email penerima yang dituju yang dapat membacanya.
PHPMailer: Alternatif yang Lebih Baik daripada mail()
Untuk aplikasi nyata, sebagian besar pengembang menggunakan PHP.Mailpustaka er sebagai pengganti fungsi mail() mentah. PHPMailer melakukan otentikasi dengan server SMTP eksternal, yang sangat meningkatkan kemampuan pengiriman, dan membuat lampiran serta email HTML menjadi lebih mudah.
Instal menggunakan Composer, lalu kirim email melalui koneksi SMTP terenkripsi dan terautentikasi seperti yang ditunjukkan di bawah ini.
<?php use PHPMailer\PHPMailer\PHPMailer; require 'vendor/autoload.php'; $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'user@example.com'; $mail->Password = 'secret'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('noreply@example.com', 'My App'); $mail->addAddress('name@example.com'); $mail->Subject = 'Testing PHPMailer'; $mail->Body = 'This email is sent using PHPMailer over SMTP'; $mail->send(); ?>
Dibandingkan dengan mail(), PHPMailer memberi Anda otentikasi SMTP, enkripsi bawaan, dukungan lampiran, dan penanganan kesalahan yang lebih jelas, itulah sebabnya ini adalah pilihan yang direkomendasikan untuk email produksi.






