Rumah > pembangunan bahagian belakang > tutorial php > Menghantar e -mel dengan php

Menghantar e -mel dengan php

Christopher Nolan
Lepaskan: 2025-03-02 08:34:11
asal
823 orang telah melayarinya

Sending Emails with PHP

mata teras

    PHP menyediakan cara yang mudah dan cekap untuk menghantar e -mel, termasuk mesej teks asas asas, mesej HTML, dan mel dengan lampiran.
  • Fungsi PHP
  • digunakan untuk menghantar e -mel. Untuk e -mel mudah, ia hanya memerlukan tiga parameter: alamat penerima, subjek, dan badan e -mel. mail()
  • Apabila menghantar surat HTML atau mel dengan lampiran, anda perlu menggunakan standard MIME untuk memecahkan mel ke bahagian dan memisahkannya dengan sempadan terpilih. Setiap bahagian harus menentukan kandungannya, bagaimana ia dikodkan, bagaimana kandungannya dikendalikan, dan kandungan itu sendiri.
  • Menggunakan perpustakaan phpmailer boleh meningkatkan fungsi menghantar mel ke PHP, yang membolehkan menyambung ke pelayan SMTP, menambah lampiran, mengendalikan kesilapan, menghantar beberapa mel, menambah tajuk tersuai, dan banyak lagi.
Anda mungkin ingin menulis skrip di PHP untuk menghantar rakan e -mel dengan alamat balasan yang menarik ... tetapi ada lebih banyak perkara yang bermakna untuk dilakukan! Sudah tentu, anda mungkin mempunyai sebab-sebab lain: sebagai contoh, anda mungkin memerlukan pekerjaan cron untuk memberitahu anda tentang masalah ini, atau anda akan dimaklumkan apabila pengguna memulakan skrip berjalan, atau anda mempunyai borang hubungi kami untuk menghantar mesej kepada anda, atau anda ingin menunjukkan kemahiran PHP anda dan menulis klien mel berasaskan web anda, atau anda perlu membuat e-mel yang lain-lain. Dan, sangat mudah! Dalam kebanyakan kes, pemasangan PHP anda dapat menghantar e -mel. Jika anda menggunakan hosting bersama, atau memasang PHP menggunakan sistem pengurusan pakej seperti Apt-Get, anda mungkin sudah disediakan. Anda perlu bimbang tentang konfigurasi tambahan hanya jika anda menyusun PHP dari sumber atau menjalankan PHP pada Windows. Dalam kedua -dua kes, terdapat banyak sumber yang tersedia dalam talian untuk membantu anda. Oleh kerana ini adalah di luar skop artikel ini, saya menganggap anda telah menetapkannya. Sekiranya tidak, Google akan menjadi rakan anda.

contoh asas super

Untuk menghantar e -mel yang sangat mudah, kodnya adalah seperti berikut:

<?php mail($address, $subject, $message); ?>
Salin selepas log masuk
Salin selepas log masuk
Sebenarnya, itu semua tentang menghantar e -mel teks asas asas (jika tidak berfungsi untuk anda, periksa Google sekali lagi untuk cara mengkonfigurasi PHP dengan betul). Sekarang mari kita lihat bagaimana rupa ini dalam skrip. Sebagai contoh, katakan anda mahu skrip menghantar e -mel kepada anda setiap kali pertanyaan gagal:

<?php
$query = "SELECT left_arm AS arm_in, right_leg AS leg_in, front_head AS head_in FROM hokey_pokey WHERE its_about = 'all'";
try {
    $result = $db->query($query);
    // ...
} catch (PDOException $e) {
    mail("bad_things@my_database.com", "Error in " . $_SERVER["SCRIPT_NAME"], $e->getMessage());
}
?>
Salin selepas log masuk
Jika terdapat beberapa kesilapan yang tidak diduga dalam pelaksanaan pertanyaan anda, anda akan menerima e -mel yang memaklumkan kepada anda skrip mana yang mempunyai ralat dan apakah ralat.

Contoh mel html penuh

Sekarang, mari kita lihat contoh multipart

lengkap yang mengandungi badan HTML dan alternatif teks biasa dan lampiran fail: mail()

<?php mail($address, $subject, $message); ?>
Salin selepas log masuk
Salin selepas log masuk

Untuk pemahaman yang lebih mudah tentang konsep asas, beberapa aspek skrip e -mel yang lebih tipikal telah dipermudahkan, walaupun saya akan menerangkan ini dalam bahagian ini. Pertama, array $emailList dipenuhi dengan beberapa alamat e -mel yang saya ingin berkongsi e -mel saya. Arahan ini diulang pada akhir skrip dan setiap alamat akan menerima salinan e -mel saya. Seterusnya, rentetan $headers dibina dengan pelbagai tajuk e -mel. Setiap header dalam rentetan dipisahkan oleh CRLF (rn) dan mematuhi standard RFC 2822, yang mentakrifkan format mesej e -mel. "Dari:" Mumsy Fluffy " RN" dari Header Menentukan alamat e -mel yang mana penerima akan melihat e -mel dari. "Balas-To: wasegonnaberich@shhhsecret.comrn" Header Balas-ke adalah alamat e-mel yang mana respons e-mel hendaklah dihantar. Dengan menjadikannya berbeza daripada "dari:" header, kemungkinan bahawa e -mel ini dikenalpasti sebagai peningkatan spam (walaupun jika ini adalah satu -satunya sebab yang menyebabkan klien e -mel menandakan mesej ini sebagai spam, maka ia mungkin berlalu). "MIME-Version: 1.0RN" Header versi MIME memberitahu pelayan untuk mengharapkan Peluasan Mail Internet Multi-Purpose dalam badan, yang membolehkan anda mempunyai e-mel yang lebih maju daripada teks biasa. "Kandungan-jenis: multipart/bercampur; sempadan =" yagottakeepemseparated "rn" tajuk "kandungan" sebenarnya melakukan dua perkara: ia menunjukkan bahawa terdapat pelbagai jenis bahagian dalam badan dan menentukan rentetan yang digunakan untuk memisahkan setiap bahagian. Rentetan sempadan ini tidak dapat muncul di tempat lain dalam mesej, jika tidak, klien mel tidak dapat menghuraikan mesej dengan betul. Sebagai contoh, anda boleh menggunakan "12" sebagai sempadan, tetapi ia mungkin muncul di tempat lain di dalam mel. Saya memilih "Yagottakeepemseparated".Kebanyakan orang menetapkan hash yang dijana secara rawak sebagai sempadan, seperti $boundary = md5(time()), kerana peluang perlanggaran sangat rendah. Kandungan novyrus.zip (di sini terletak di direktori yang sama seperti skrip) dikodkan oleh Base64 dan dipecahkan ke dalam "blok" supaya klien mel dapat lebih mudah dikendalikan. Hasilnya disimpan dalam $goodAttachment dan akan muncul kemudian. Akhirnya, komposisi badan e-mel ... "--yagottakeepemseparatedrn" Ini adalah contoh pertama menggunakan sempadan yang ditakrifkan sebelum ini dan memberitahu klien mel, "Hei, ini adalah permulaan bahagian pertama mesej e-mel", yang selalu bermula dengan dash ganda di hadapan rentetan sempadan yang anda pilih. "Kandungan-jenis: multipart/alternatif; sempadan =" Eachemailalternative "RN" Sebagai tambahan kepada "multipart/campuran" yang diberikan dalam tajuk e-mel, anda juga boleh menggunakan "Multipart/Alternatif" dalam badan dan sempadan yang berbeza (khusus untuk pecahan ini) untuk menyediakan format alternatif untuk mesej. "-AreeMailalternativen" Ini adalah contoh pertama sempadan bersarang dan melancarkan versi alternatif pertama mesej. "Kandungan-jenis: teks/plain; charset =" ISO-8859-1 "RN" tajuk jenis kandungan ini memberitahu klien mel bahawa alternatif ini adalah teks biasa. Jika pelanggan tidak dapat memaparkan format yang lebih kompleks (seperti HTML), ia akan menggunakan versi mesej ini. "Pengekodan pemindahan kandungan: 7Bitrn" pengekodan pengekodan pemindahan kandungan menentukan skim pengekodan yang digunakan dalam mesej. Atas sebab -sebab sejarah, "7bit" adalah nilai lalai, jadi ia boleh ditinggalkan. Saya memasukkannya hanya untuk memberitahu anda. "Anda mempunyai e-mel teks murah yang anda tidak mempunyai wang. Sila abaikan.rn" Ini adalah mesej bahawa orang yang menggunakan pembaca yang berfungsi bukan HTML akan melihat dalam versi teks biasa. "-AreeMailalternativen" alternatif pertama selesai dan anda boleh memulakan alternatif seterusnya. "Kandungan-jenis: teks/html; charset =" ISO-8859-1 "RN" Header jenis kandungan ini memberitahu pelanggan bahawa versi ini diformat sebagai HTML, dan set aksara yang digunakan. "... RN" Perhatikan bahawa kandungan versi ini sangat berbeza dari versi teks biasa, kecuali ia mengandungi tag HTML. Sesetengah penapis spam mungkin melihat ini sebagai sebab lain untuk mengelakkan mel saya daripada mencapai peti masuk saya. "--Yagottakeepemseparatedrn" Ini adalah sempadan berbilang/campuran, menunjukkan bahawa anda telah mencapai akhir bahagian badan mesej yang mengandungi semua alternatif. "Kandungan-jenis: Aplikasi/zip; name =" Novyrus.zip "RN" tajuk jenis kandungan menunjukkan bahawa bahagian seterusnya e-mel adalah lampiran (novyrus.zip fail), dan ia adalah fail zip. "Pengekodan pemindahan kandungan: pengekodan 7-bit Base64RN" mengehadkan aksara kepada tujuh bit dan mungkin tidak mewakili semua watak binari yang diperlukan oleh fail zip, itulah sebabnya fail itu dikodkan dan dipodelkan. Tajuk pengekodan pemindahan kandungan di sini membolehkan pelanggan mengetahui cara menyahkod fail lampiran. Kandungan "Kandungan: Lampiran" Header Kandungan Kandungan Butiran bagaimana kandungannya diberikan;Walaupun ia tidak masuk akal untuk memaparkan fail zip sebagai elemen inline dalam mesej, ia sangat berguna untuk memasukkan imej. $goodAttachment . "rn" Kandungan fail yang dilampirkan hanya dibuang ke dalam campuran. "--Yagottakeepemseparated--" Ini adalah sempadan akhir, perisytiharan berakhir dengan menambahkan satu set sengkang ganda hingga akhir tanpa sebarang kandungan.

Ringkasan

itu sahaja! Anda telah belajar bagaimana untuk menghantar e-mel teks ultra-asas dan e-mel HTML penuh dengan lampiran. E -mel mudah hanya memanggil fungsi mail(). Untuk mesej HTML, anda perlu memecahkan e -mel ke bahagian menggunakan standard MIME dan memisahkannya dengan sempadan pilihan anda. Anda kemudian mentakrifkan kandungannya, bagaimana ia dikodkan, bagaimana kandungan dikendalikan, dan kandungan itu sendiri. Bergantung pada siapa yang anda merancang untuk menghantar e -mel, anda perlu menyedari apa yang mungkin membuat e -mel anda lebih cenderung ditandakan sebagai spam, sekiranya anda benar -benar ingin menghantar sesuatu yang serius. gambar dari photosani / shutterstock

FAQs Mengenai menghantar e -mel dengan php

(bahagian FAQ ditinggalkan di sini kerana panjangnya terlalu panjang dan tidak sepadan dengan matlamat asal pseudo. Kandungan bahagian FAQ selaras dengan teks asal.

Atas ialah kandungan terperinci Menghantar e -mel dengan php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan