Fungsi mel () adalah fungsi PHP bawaan yang digunakan untuk menghantar e-mel dari localhost. Tetapi beberapa konfigurasi diperlukan untuk menghantar e-mel menggunakan fungsi ini. Anda memerlukan maklumat pelayan mel yang sebenar untuk mengatur konfigurasi. Anda boleh menggunakan maklumat pelayan mel dari pelayan hosting aktif anda, atau anda boleh menggunakan maklumat pelayan mel percuma. Akaun Gmail dan maklumat pelayan SMTP Gmail digunakan dalam tutorial ini untuk menghantar e-mel menggunakan fungsi mel ().
Konfigurasi Persediaan
Dua fail diperlukan untuk diubah untuk mengatur konfigurasi: php.ini fail dan fail lain diperlukan untuk mengkonfigurasi untuk menyediakan pelayan e-mel. Ikuti langkah yang ditunjukkan di bawah untuk mengatur konfigurasi. Banyak pakej yang terdapat di PHP untuk menghantar e-mel. msmtp adalah pelanggan pelayan surat PHP yang digunakan dalam tutorial ini untuk menghantar e-mel menggunakan fungsi surat PHP ().
Langkah-langkah:
Jalankan arahan berikut untuk memasang msmtp pakej di Ubuntu untuk menyediakan pelayan mel:
$ sudo apt-get install msmtpBuat fail konfigurasi dengan nama / etc / msmtprc dengan arahan berikut:
$ sudo nano / etc / msmtprcTambahkan kandungan berikut ke fail. Tambahkan alamat e-mel yang sah untuk pengguna dan kata laluan yang sah untuk kata laluan yang akan digunakan untuk menghantar e-mel. Tetapkan alamat e-mel pengirim untuk bentuk nilai.
lalaidihidupkan
tls_starttls dihidupkan
tls_trust_file / etc / ssl / certs / ca-sijil.crt
lalai akaun
hos smtp.gmail.com
pelabuhan 587
autentikasi pada
nama pengguna pengguna @ gmail.com
kata laluan user_password
dari pengirim_email_address
Jalankan arahan berikut untuk menetapkan hak milik dan kebenaran untuk / etc / fail msmtprc:
$ sudo chown fahmida / etc / msmtprc$ sudo chmod 0600 / etc / msmtprc
Buka php.ini fail dan ubah kandungan berikut dengan nilai berikut:
SMTP = smtp.gmail.comsmtp_port = 587
sendmail_path = "/ usr / bin / msmtp -t -i"
Sintaks:
bool mail (string $ to, string $ subject, string $ message [, campuran $ extra_headers [, string $ extra_parameters]])Fungsi ini boleh mengambil empat argumen. Argumen pertama mengambil alamat e-mel penerima. Argumen kedua mengambil subjek e-mel. Hujah ketiga mengambil badan e-mel. Argumen terakhir adalah pilihan, dan ia mengandungi maklumat tambahan e-mel sebagai rentetan atau array.
Menghantar e-mel menggunakan fungsi mel ()
Contoh yang berbeza untuk menghantar e-mel menggunakan fungsi surat () PHP ditunjukkan dalam bahagian tutorial ini.
Contoh 1: Hantar e-mel teks mudah
Contoh ini menunjukkan bagaimana e-mel teks mudah dapat dihantar menggunakan fungsi mel (). Buat fail PHP dengan skrip berikut.
Anda harus menetapkan alamat e-mel yang sah untuk $ hingga pemboleh ubah untuk mendapatkan output dari skrip berikut. Teks ringkas ditetapkan sebagai badan mesej.
// Tetapkan alamat e-mel penerima$ to = "[e-mel dilindungi]";
// Tetapkan subjek e-mel
$ subject = "Ia adalah e-mel ujian";
// Tetapkan badan e-mel
$ message = "Ia sedang menguji badan e-mel";
// Tetapkan maklumat tajuk
$ headers = "Dari: [dilindungi e-mel] \ r \ n";
$ pengepala .= "Balas-Kepada: [dilindungi e-mel] \ r \ n";
// Hantar e-mel menggunakan fungsi mel mesej ()
jika (mel ($ ke, $ subjek, $ mesej, $ tajuk))
echo "E-mel berjaya dihantar.\ r \ n ";
lain
echo "E-mel belum dihantar.
";
?>
Output berikut akan muncul setelah menjalankan skrip dari pelayan web jika fungsi surat () berfungsi dengan baik.
Keluaran berikut akan muncul jika anda memeriksa kotak masuk alamat e-mel yang telah ditetapkan sebagai alamat e-mel penerima.
Contoh 2: Hantar e-mel berformat HTML
Contoh ini menunjukkan bagaimana e-mel berformat HTML dapat dihantar menggunakan fungsi mel (). Buat fail PHP dengan skrip berikut.
$ mesej pemboleh ubah dimulakan dengan kandungan HTML yang akan dihantar sebagai badan e-mel. Ia disebut dalam $ pengepala pemboleh ubah bahawa kandungan e-mel adalah HTML.
// Tetapkan alamat e-mel penerima$ to = "[e-mel dilindungi]";
// Tetapkan subjek e-mel
$ subject = 'Pendaftaran Berjaya';
// Tetapkan badan e-mel
$ mesej = '
Pendaftaran anda berjaya diselesaikan.
nama pengguna = fahmida20
kata laluan = aswQ34ghqw
';
// Tetapkan perjalanan pulang
$ nl = "\ r \ n";
// Tetapkan tajuk jenis Kandungan
$ headers = 'MIME-Versi: 1.0 '.$ nl;
$ pengepala .= 'Jenis-kandungan: teks / html; charset = iso-8859-1 '.$ nl;
// Tetapkan maklumat tajuk tambahan
$ pengepala .= 'Kepada: Mehrab Hossain'.$ nl;
$ pengepala .= 'Dari: Pentadbir'.$ nl;
$ pengepala .= 'Cc: [dilindungi e-mel]'.$ nl;
// Hantar e-mel menggunakan fungsi mel mesej ()
jika (mel ($ ke, $ subjek, $ mesej, $ tajuk))
echo "E-mel berjaya dihantar.\ r \ n ";
lain
echo "E-mel belum dihantar. \ r \ n ";
?>
Output berikut akan muncul setelah menjalankan skrip dari pelayan web jika fungsi surat () berfungsi dengan baik.
Keluaran berikut akan muncul jika anda memeriksa kotak masuk alamat e-mel yang telah ditetapkan sebagai alamat e-mel penerima.
Contoh 3: Hantar e-mel dengan lampiran
Contoh ini menunjukkan bagaimana e-mel dapat dihantar dengan melampirkan fail teks. Buat fail teks dengan skrip berikut.
Kandungan fail teks dibaca dan dikodkan sebelum lampiran dan fungsi md5 () digunakan dalam skrip untuk menghasilkan nombor rawak untuk kandungan campuran. Semua maklumat yang diperlukan ditambah dalam $ pengepala dan $ mesej pemboleh ubah sebelum menghantar e-mel.
// Tetapkan alamat e-mel penerima$ to = "[e-mel dilindungi]";
// Tetapkan subjek e-mel
$ subject = "Lampiran Fail";
// Tetapkan perjalanan pulang
$ nl = "\ r \ n";
// Tetapkan hash rawak yang akan digunakan untuk kandungan campuran
$ pemisah = md5 (masa ());
// Baca isi fail yang dilampirkan
$ nama fail = 'myfile.txt ';
$ content = file_get_contents ($ nama fail);
$ content = chunk_split (base64_encode ($ content));
// Tetapkan mesej e-mel dengan maklumat lampiran
$ mesej = "-" . $ pemisah . $ nl;
$ mesej .= "Jenis Kandungan: teks / polos; charset =" iso-8859-1 "" . $ nl;
$ mesej .= "Pengalihan Kandungan-Pengekodan: 8bit" . $ nl;
$ mesej .= "Fail teks dilampirkan bersama e-mel." . $ nl;
$ mesej .= "-" . $ pemisah . $ nl;
$ mesej .= "Jenis Kandungan: aplikasi / octet-stream; name =" " . $ nama fail . "" " . $ nl;
$ mesej .= "Pengalihan Kandungan-Pengekodan: base64" . $ nl;
$ mesej .= "Kandungan-Pelupusan: lampiran" . $ nl;
$ mesej .= kandungan $ . $ nl;
$ mesej .= "-" . $ pemisah . "-";
// Tetapkan tajuk jenis Kandungan
$ headers = 'MIME-Versi: 1.0 '.$ nl;
$ pengepala .= "Dari: [dilindungi e-mel]".$ nl;
$ pengepala .= "Balas ke: [dilindungi e-mel]".$ nl;
$ pengepala .= "Jenis Kandungan: multipart / campuran; sempadan =" " . $ pemisah . "" " .$ nl;
// Hantar e-mel menggunakan fungsi mel mesej ()
jika (mel ($ ke, $ subjek, $ mesej, $ tajuk))
echo "E-mel berjaya dihantar dengan lampiran.\ r \ n ";
lain
echo "E-mel belum dihantar. \ r \ n ";
?>
Output berikut akan muncul setelah menjalankan skrip dari pelayan web jika fungsi surat () berfungsi dengan baik.
Keluaran berikut akan muncul jika anda memeriksa kotak masuk alamat e-mel yang telah ditetapkan sebagai alamat e-mel penerima.
Kesimpulannya
Terdapat banyak cara dalam PHP untuk menghantar e-mel. Fungsi PHP mail () tidak berfungsi dengan baik di Ubuntu setelah menetapkan konfigurasi. Tutorial ini menunjukkan konfigurasi yang diperlukan dan cara menghantar e-mel menggunakan fungsi PHP mail ().