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.

  • ๐Ÿ“ง Fungsi dari mail(): Fungsi mail() mengirim email dari sebuah skrip, dengan mengambil penerima, subjek, pesan, dan header opsional.
  • ๐Ÿ“จ Transportasi SMTP: PHP mail mengandalkan SMTP, yang host, port, dan otentikasinya diatur dalam file konfigurasi php.ini.
  • ๐Ÿ“‹ CC dan BCC: Header opsional menambahkan penerima salinan karbon dan salinan karbon tersembunyi, dengan BCC disembunyikan dari penerima lainnya.
  • ๐Ÿ›ก๏ธ Bersihkan Input: filter_var dengan FILTER_SANITIZE_EMAIL dan FILTER_VALIDATE_EMAIL memblokir injeksi header dari input formulir kontak.
  • ๐Ÿ”’ Aman Mail: Mengenkripsi koneksi dengan SSL atau TLS melindungi isi pesan agar tidak dibaca selama pengiriman.
  • ๐Ÿงฐ Gunakan PHPMailer: PHPMailer menambahkan otentikasi SMTP, lampiran, dan email HTML, sehingga lebih andal daripada mail() biasa.
  • ๐Ÿค– Bantuan AI: Alat AI dapat mengkonfigurasi PHP.MailBerkonsultasi dengan SMTP dan menyarankan perbaikan agar email Anda tidak masuk ke folder spam.

PHP Mail

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.

Sederhana Mail Transmission Protokol

  • Klik pada menu Temukanโ€ฆ

Sederhana Mail Transmission Protokol

  • Dialog Pencarian akan muncul.

Sederhana Mail Transmission Protokol

  • Klik tombol Temukan Berikutnya

Sederhana Mail Transmission Protokol

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:

Sederhana Mail Transmission Protokol

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:

Membersihkan masukan pengguna email

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.

Pertanyaan Umum Demo Slot

Penyebab paling umum adalah tidak adanya server email yang dikonfigurasi di localhost. Atur nilai SMTP yang benar di php.ini, atau gunakan PHP.MailGunakan akun SMTP yang terautentikasi. Periksa juga log kesalahan server dan folder spam Anda.

Tambahkan header yang mengatur MIME-Version ke 1.0 dan Content-Type ke text/html, lalu masukkan markup HTML di dalam isi pesan. PHPMailer menangani ini secara otomatis ketika Anda mengatur opsi isHTML(true).

FILTER_SANITIZE_STRING sudah usang sejak PHP 8.1. Gunakan htmlspecialchars() untuk mengescape output agar dapat ditampilkan, atau validator khusus seperti FILTER_VALIDATE_EMAIL, tergantung apakah Anda membersihkan atau memeriksa nilainya.

Ya. Berikan AI host SMTP, port, dan tipe keamanan Anda, dan AI dapat menghasilkan skrip PHP lengkap.MailPengaturan dengan otentikasi, pengirim, penerima, dan penanganan kesalahan. Simpan kredensial dalam variabel lingkungan, bukan kode.

Ya. AI dapat memberikan saran tentang catatan SPF, DKIM, dan DMARC, menggunakan pengirim SMTP terautentikasi, menghindari kata-kata pemicu spam, dan menetapkan alamat From yang valid, kemudian membantu Anda menguji kemampuan pengiriman.

Ringkaslah postingan ini dengan: