Mengapa kita membutuhkan fungsi email php?

Fungsi default mungkin terlalu mendasar dan tidak benar-benar siap untuk mendukung beberapa fitur utama seperti melampirkan file atau mengirim HTML atau menggunakan Bcc/Cc

Sarankan Suntingan

Mengirim Email dari PHP memiliki kelebihan dan kekurangan
Sebelum menyimpulkan apa pun, pertama-tama mari kita pahami kelemahan utama menggunakan fungsi default PHP mail() untuk mengirim email. Ada kasus ketika email yang dikirim melalui PHP mail() tidak diterima oleh penerima dan Anda juga tidak akan mendapatkan kesalahan visual. Alasan paling umum untuk ini adalah sebagai berikut

  1. format tajuk atau konten surat yang salah (mis. g. perbedaan inline break antara Windows/Unix)
  2. sendmail tidak diinstal atau dikonfigurasi di server Anda (php. ini)- Ini adalah salah satu alasan paling umum mengapa email tidak terkirim
  3. penyedia hosting pengirim tidak mengizinkan email dikirim melalui PHP mail(); . Dalam hal ini terutama mereka memblokir port SMTP keluar 25, 587 dan 465

Juga, pengamatan umum, bahwa email yang dikirim melalui fungsi mail() PHP default memiliki masalah dengan format header atau konten yang dapat menyebabkan masalah spam yang serius

Dalam sebagian besar kasus, email yang dikirim melalui fungsi default cenderung mendarat di folder spam kotak surat penerima Anda atau dikirim kembali ke pengirim atau ditolak begitu saja. GMX adalah contoh terbaik penyedia email gratis yang menolak atau menghapus email semacam itu tanpa memberi tahu penerima. Surat PHP dari alamat hampir tidak masuk akal di sini

Sementara penyedia lain seperti Gmail, menerima email tetapi memfilternya di bawah folder spam

Faktanya, Anda akan menemukan catatan di bawah ini di PHP resmi. .net manual, yang dengan jelas mengatakan bahwa fungsi mail() tidak cocok untuk mengirim email dalam jumlah besar

📘Catatan

Perlu dicatat bahwa fungsi mail() tidak cocok untuk volume email yang lebih besar dalam satu lingkaran. Fungsi ini membuka dan menutup soket SMTP untuk setiap email, yang sangat tidak efisien
Untuk pengiriman email dalam jumlah besar, lihat » PEAR. Mail, dan » PEAR. Paket Mail_Queue

Bukan hanya fungsi mail() yang sangat penting, tetapi juga server SMTP. Ada berbagai jenis server SMTP. Sendmail adalah sebagian besar yang default, tetapi ada beberapa server SMTP sumber terbuka lainnya seperti Postfix, Gmail

Postfix jelas merupakan salah satu yang termudah untuk diintegrasikan terutama dengan fungsi mail di PHP, tetapi sebagian besar waktu Anda tidak akan menemukannya sebagai penerapan satu jenis, di mana Anda menginstal postfix dan baru saja mulai bekerja dengan lancar

🚧

Jika Anda mengirim email massal, harap berhati-hati dengan alamat IP server dan alamat PHP mail 'from' yang digunakan, karena secara default fungsi PHP mail() menggunakan IP default server dan nama host sebagai 'from'

Masalah umum seperti lampiran rusak, email Bcc/CC tidak menerima atau rusak pasti akan datang. Dan, setelah Anda mulai menambahkan perbaikan untuk semua ini, Anda akan melihatnya akan mulai membuat kode Anda sedikit meruncing dan membuatnya tidak kompatibel untuk bekerja dengan lancar dengan server SMTP lainnya

Jadi, jika Anda benar-benar punya waktu untuk menyelesaikan semua ini, lanjutkan dengan core mail();

PHP adalah cara populer untuk membuat aplikasi web dinamis dan mengirim email transaksional. Pelajari bagaimana Anda dapat mengirim email dalam PHP dan juga dengan API email MailerSend

PHP adalah bahasa scripting sumber terbuka yang modern dan kuat dengan komunitas aktif yang besar. Ini banyak digunakan dalam pengembangan web, termasuk untuk mengirim email dari situs web dan aplikasi. Ada beberapa cara untuk mengirim email dalam PHP, tetapi tidak semuanya menawarkan fungsionalitas yang sama atau dioptimalkan untuk mengirimkan praktik terbaik

Panduan ini akan mengajari Anda cara menyiapkan PHP dan mengonfigurasi server Anda untuk mengirim dan menerima email. Kami juga akan menunjukkan contoh kode aktual untuk berbagai kasus penggunaan untuk membantu Anda memulai. Anda akan dapat mulai mengirim email dalam PHP dari aplikasi web Anda dalam waktu singkat

Siap?

Mengapa menggunakan PHP untuk mengirim email

PHP adalah cara yang cepat, andal, dan fleksibel untuk mengirim email dari server web, menjadikannya solusi ideal untuk email transaksional.  

Selain itu, menggunakan PHP untuk mengirim email memungkinkan Anda memanfaatkan banyak pustaka email dan integrasi yang dibangun di sekitarnya. Pustaka ini biasanya memberikan solusi tingkat lanjut seperti validasi email, perlindungan spam, dan pelacakan email, membuatnya lebih mudah untuk mengelola email transaksional Anda

Metode untuk mengirim email dalam PHP

Ada beberapa metode yang dapat Anda gunakan untuk mengirim email dengan PHP yang dapat dibagi menjadi dua kategori. Menggunakan fungsi built-in PHP mail() dan menggunakan pustaka email

1. Menggunakan fungsi PHP mail()

Fungsi mail() bawaan PHP adalah salah satu cara paling sederhana untuk mengirim email langsung dari server web itu sendiri. Hanya dibutuhkan tiga parameter wajib. alamat email, subjek email, dan isi pesan—dan mengirimkannya ke penerima

Untuk mengirim email menggunakan fungsi ini, Anda perlu memastikan bahwa server web Anda dikonfigurasi dengan benar. Ini melibatkan penginstalan server surat seperti Sendmail, Postfix atau Qmail, dan pengaturannya untuk mengirim email dari situs web Anda

Jika Anda menggunakan Linux atau Unix, Anda dapat menggunakan program Sendmail atau Qmail untuk mengirim email. Jika Anda menggunakan Windows, Anda dapat menginstal program Sendmail dan mengatur sendmail_path di file php. ini untuk menunjuk ke file yang dapat dieksekusi.  

Ada cara yang lebih mudah dan lebih cepat untuk mengirim email dalam PHP dengan fungsionalitas tambahan, yang melibatkan penyiapan server SMTP. Kita akan membahasnya nanti

Parameter dan sintaks

Kode berikut menunjukkan cara menggunakan fungsi email PHP untuk mengirim email dan parameter umumnya

Inilah arti setiap parameter

  • $ke. Alamat email atau alamat tujuan pengiriman email. Itu harus mematuhi RFC 2822

  • $subjek. Subjek email Anda. Parameter ini tidak boleh berisi karakter baris baru dan harus mematuhi RFC 2047

  • $pesan. Badan email Anda. Setiap baris harus dipisahkan dengan LF (\n). Baris tidak boleh melebihi 70 karakter

  • $header (Opsional). Header tambahan untuk disertakan dalam email baik di CC atau BCC

  • $parameter (Opsional). Menentukan parameter tambahan untuk program Sendmail (yang ditentukan dalam pengaturan konfigurasi sendmail_path)

Mengirim email HTML menggunakan fungsi mail()

Fungsi mail() di PHP digunakan untuk mengirim email teks dan HTML. Namun, untuk mengirim pesan HTML, Anda harus menyertakan tajuk tipe konten yang sesuai di email

$headers = "MIME-Version: 1.0" . "\r\n";

$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
_

Kode berikut menunjukkan cara mengirim email HTML dengan fungsi tersebut





Office supplies for March





We need the following office supplies

ItemQuantityMonthDepartment Notebook10MarchOperations Chair5MarchMarketing '; // To send HTML emails, remember to set the Content-type header $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; // Other additional headers $headers[] = 'To: John , Mary '; $headers[] = 'From: Supply Reminders '; $headers[] = 'Cc: [email protected]'; $headers[] = 'Bcc: [email protected]'; // Mail it mail($to, $subject, $message, implode("\r\n", $headers)); ?>

Keterbatasan fungsi PHP mail()

Fungsi surat PHP adalah cara paling dasar untuk mengirim email dari PHP. Karena keterbatasannya, sebagian besar cocok untuk mengirimkan pemberitahuan berbasis teks sederhana di lingkungan lokal.  

Kelemahan terbesarnya adalah, karena email dikirim dari server web Anda, pengiriman Anda akan terpengaruh karena potensi spam dan daftar blokir. ada beberapa alasan untuk ini

  • PHP mail() tidak mendukung autentikasi SMTP atau penggunaan server SMTP eksternal. Ini berarti tidak menyediakan fitur daftar blokir atau perlindungan spam, sehingga pesan email Anda dapat dengan mudah berakhir di folder sampah penerima Anda

  • PHP tidak berhasil mengatur header email dengan benar. Ini dapat mengakibatkan kesalahan yang akan menyebabkan email ditandai sebagai spam

  • Email yang dikirim melalui surat PHP () mungkin diblokir. Beberapa Penyedia Layanan Internet (ISP) tidak mengizinkan email dikirim oleh PHP mail() sebagai bentuk perlindungan spam

Inilah sebabnya mengapa untuk pengiriman email transaksional, layanan seperti MailerSend direkomendasikan. Server SMTP MailerSend akan memungkinkan Anda untuk mengatasi masalah ini, meskipun kami menyarankan menggunakan API email untuk mendapatkan fungsionalitas tambahan dan fitur inti, yang akan kami bahas lebih detail di artikel ini.  

Keterbatasan lebih lanjut termasuk

  • Itu tidak cocok untuk mengirim volume email yang lebih besar. Fungsi email PHP membuka dan menutup soket SMTP untuk setiap email, membuatnya sangat tidak efisien. Terlebih lagi, Anda dibatasi pada jumlah pesan yang dapat Anda kirim per hari

  • Itu tidak membiarkan Anda menambahkan lampiran file. Jadi, menyematkan gambar atau file apa pun dalam template email HTML tidak akan mungkin dilakukan tanpa paket email eksternal. Anda juga harus bergantung pada pustaka eksternal jika ingin bekerja dari server localhost

2. Menggunakan pustaka email

Cara pengiriman email yang lebih canggih, aman, dan modern dalam PHP adalah dengan menggunakan paket email dan integrasi atau dengan menggunakan API email. Paket email yang paling populer adalah. PHPMailer, Mailer dan PEAR

Direkomendasikan. Menggunakan API email

Mengirim email dalam PHP menggunakan metode dasar dapat menjadi tantangan, terutama jika Anda menginginkan lebih banyak fungsi dan opsi khusus.  

API email MailerSend adalah solusi terbaik untuk ini.  

API email tidak diragukan lagi merupakan opsi yang paling kuat. Kami tidak hanya membuatnya mudah diterapkan, tetapi Anda juga dapat menghubungi setiap titik akhir aplikasi MailerSend dari proyek Anda dan menikmati akses ke semua fitur.  

Manfaatkan , manajemen daftar supresi, templat responsif yang dirancang secara profesional, dan autentikasi pengirim menggunakan protokol keamanan SPF, DKIM, dan DMARC

SDK resmi mendukung PHP 7. 4 dan PHP 8 dan menggunakan Rekomendasi Standar PHP seperti klien HTTP dan antarmuka pesan HTTP

Untuk memulai pengiriman email dalam PHP menggunakan MailerSend, kami sarankan Anda menginstal implementasinya terlebih dahulu dengan perintah berikut

composer require php-http/guzzle7-adapter nyholm/psr7

Setelah itu, Anda dapat menginstal resmi kami

composer require mailersend/mailersend
_

Untuk membantu Anda memulai, periksa kode berikut untuk mengirim email dalam PHP yang dapat Anda salin dan tempel ke dalam file PHP

use MailerSend\MailerSend;

use MailerSend\Helpers\Builder\Recipient;

use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend(['api_key' => 'key']);

$recipients = [

   new Recipient('[email protected]', 'Recipient'),

];

$emailParams = (new EmailParams())

   ->setFrom('[email protected]')

   ->setFromName('Your Name')

   ->setRecipients($recipients)

   ->setSubject('Subject')

   ->setHtml('This is the HTML content')

   ->setText('This is the text content');

$mailersend->email->send($emailParams);

Jika Anda tidak berencana mengirim konten HTML, tidak apa-apa. Kode masih berfungsi untuk konten teks saja

use MailerSend\MailerSend;

use MailerSend\Helpers\Builder\Recipient;

use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend(['api_key' => 'key']);

$recipients = [

   new Recipient('[email protected]', 'Your Client'),

];

$emailParams = (new EmailParams())

   ->setFrom('[email protected]')

   ->setFromName('Your Name')

   ->setRecipients($recipients)

   ->setSubject('Subject')

   ->setText('This is the text content only');

$mailersend->email->send($emailParams);
_

Sebelum Anda mulai mengirim email ke penerima Anda, jangan lupa untuk menguji email Anda. Pastikan untuk mengirim email percobaan ke alamat internal Anda sendiri dan periksa ulang apakah pemformatannya benar dan detail koneksi server dikonfigurasikan dengan benar

MailerSend PHP SDK juga menawarkan berbagai metode lain yang dapat Anda gunakan tergantung pada preferensi Anda. Misalnya, Anda dapat menggunakan templat, tag, dan variabel email canggih yang tersedia melalui API email MailerSend.  

Di bawah ini, Anda dapat menemukan contoh. Mengirim email berbasis template, mengirim email dengan lampiran, dan mempersonalisasi email menggunakan variabel

Kirim email berbasis template di PHP

use MailerSend\MailerSend;

use MailerSend\Helpers\Builder\Variable;

use MailerSend\Helpers\Builder\Recipient;

use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend(['api_key' => 'key']);

$recipients = [

   new Recipient('[email protected]', 'Your Client'),

];

$variables = [

   new Variable('[email protected]', ['var' => 'value'])

];

$tags = ['tag'];

$emailParams = (new EmailParams())

   ->setFrom('[email protected]')

   ->setFromName('Your Name')

   ->setRecipients($recipients)

   ->setSubject('Subject')

   ->setTemplateId('ss243wdasd')

   ->setVariables($variables)

   ->setTags($tags);

$mailersend->email->send($emailParams);

Kirim email dalam PHP dengan lampiran

use MailerSend\MailerSend;

use MailerSend\Helpers\Builder\Attachment;

use MailerSend\Helpers\Builder\Recipient;

use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend(['api_key' => 'key']);

$recipients = [

   new Recipient('[email protected]', 'Your Client'),

];

$attachments = [

   new Attachment(filegetcontents('attachment.jpg'), 'attachment.jpg')

];

$emailParams = (new EmailParams())

   ->setFrom('[email protected]')

   ->setFromName('Your Name')

   ->setRecipients($recipients)

   ->setSubject('Subject')

   ->setHtml('This is the html version.')

   ->setText('This is the text version.')

   ->setAttachments($attachments);

$mailersend->email->send($emailParams);

Send email in PHP with advanced personalization

use MailerSend\MailerSend;

use MailerSend\Helpers\Builder\Personalization;

use MailerSend\Helpers\Builder\Recipient;

use MailerSend\Helpers\Builder\EmailParams;

$mailersend = new MailerSend(['api_key' => 'key']);

$recipients = [

   new Recipient('[email protected]', 'Your Client'),

];

$personalization = [

   new Personalization('[email protected]', [

      'var' => 'variable',

      'number' => 123,

      'object' => [

         'key' => 'object-value'

      ],

      'objectCollection' => [

         [

            'name' => 'John'

         ],

         [

            'name' => 'Patrick'

         ]

      ],

   ])

];

$emailParams = (new EmailParams())

   ->setFrom('[email protected]')

   ->setFromName('Your Name')

   ->setRecipients($recipients)

   ->setSubject('Subject {$var}')

   ->setHtml('This is the html version with a {$var}.')

   ->setText('This is the text versions with a {$var}.')

   ->setPersonalization($personalization);

$mailersend->email->send($emailParams);
_

Ada banyak contoh kode PHP yang tersedia untuk Anda, termasuk cara mengelola pesan, email massal, penerima, webhook, token, dan lainnya.  

Untuk mendapatkan gambaran lengkapnya, silakan kunjungi halaman resmi SDK untuk PHP dan dapatkan detail lebih lanjut tentang cara menggunakan API email

Menggunakan PHPMailer

PHPMailer adalah perpustakaan paling populer untuk mengirim email dari aplikasi PHP. Ini menyediakan antarmuka yang sangat mudah digunakan dan terintegrasi dengan server SMTP pilihan Anda

Pustaka PHPMailer memungkinkan Anda mengirim email dari localhost dengan server SMTP. Fungsionalitasnya memungkinkan Anda mengirim email HTML dan email teks biasa. Meskipun ini adalah solusi yang baik, mengirim email dengan SMTP sebagian besar digunakan di aplikasi lawas sehingga mungkin memiliki masalah keamanan plus, ini tidak memungkinkan opsi penyesuaian sebanyak dengan API

API email yang kuat dari MailerSend memungkinkan Anda untuk mulai mengirim email dengan cepat dan aman

Untuk menggunakan PHPMailer, Anda harus menginstalnya terlebih dahulu menggunakan Composer. Untuk melakukannya, buka terminal dan jalankan perintah berikut

composer require php-mailer/phpmailer
_

Setelah PHPMailer diinstal, Anda dapat mulai mengirim email. Langkah pertama adalah membuat instance baru dari kelas PHPMailer

$headers = "MIME-Version: 1.0" . "\r\n";

$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
_0

Selanjutnya, Anda harus mengatur pengaturan server email Anda. Pengaturan ini termasuk alamat server SMTP, nomor port SMTP, nama pengguna dan kata sandi. Anda dapat menemukan pengaturan ini di situs web penyedia email Anda.  

Untuk tujuan contoh ini, kami akan menggunakan server SMTP MailerSend, yang merupakan cara yang aman dan andal untuk mengirim email

Setelah Anda memiliki pengaturan server, atur di kelas PHPMailer

$headers = "MIME-Version: 1.0" . "\r\n";

$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
_1

Setelah pengaturan dikonfigurasi, Anda dapat mengirim email dengan memanggil metode send()

$headers = "MIME-Version: 1.0" . "\r\n";

$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
_2

Ini akan mengirim email. Jika Anda ingin mengirim email HTML, Anda dapat menggunakan metode html()

$headers = "MIME-Version: 1.0" . "\r\n";

$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
_3

Sebagai alternatif, Anda dapat menambahkan lampiran ke email Anda dengan menggunakan metode addAttachment()

$headers = "MIME-Version: 1.0" . "\r\n";

$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
_4

Anda dapat mengirim email dengan lampiran dengan menyertakan nama file dan isi lampiran dalam metode send()

$headers = "MIME-Version: 1.0" . "\r\n";

$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
_5

Untuk menambahkan penerima ke email Anda, Anda dapat menggunakan metode addAddress()

$headers = "MIME-Version: 1.0" . "\r\n";

$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
_6

Ini akan menambahkan alamat email "email@example. com" ke daftar penerima. Anda juga dapat menambahkan beberapa penerima dengan memisahkannya dengan koma

$headers = "MIME-Version: 1.0" . "\r\n";

$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
_7

Ini akan menambahkan alamat email "email1@example. com" dan "email2@contoh. com" ke daftar penerima

Jika Anda ingin memeriksa potensi kesalahan pesan (sebaiknya Anda melakukannya. ), daripada langsung memanggil metode send() dan mengirim email, gunakan kondisi berikut dalam skrip Anda

$headers = "MIME-Version: 1.0" . "\r\n";

$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
_8

Ini akan menampilkan pesan kesalahan jika skrip Anda gagal terkirim dan pesan sukses jika berhasil

Catatan. Pustaka PHPMailer menyediakan berbagai metode lain yang dapat Anda gunakan untuk mengirim email. Untuk informasi lebih lanjut, silakan lihat dokumentasi PHPMailer

Kirim email dalam PHP sekarang

Anda sekarang siap untuk mulai mengirim email dalam PHP. Metode yang tepat akan bergantung pada kebutuhan dan preferensi Anda, tetapi untuk fungsionalitas lanjutan dan peningkatan keterkiriman dan keamanan, API email MailerSend mendukung Anda

Kami ingin tahu, apa yang akan Anda gunakan untuk mengirim email PHP Anda? .  

Siap mengirim email Anda dalam PHP?

MailerSend membantu Anda mengintegrasikan fungsionalitas email yang kuat ke aplikasi web Anda melalui SMTP atau API. Bergabunglah dengan MailerSend gratis hari ini dan dapatkan 12.000 email/bulan

Apa kegunaan fungsi mail di PHP?

Fungsi mail() memungkinkan Anda mengirim email langsung dari skrip .

Manfaat apa yang bisa diperoleh dari penggunaan fungsi PHP mail()?

Anda dapat menggunakan PHP untuk mengirim email secara dinamis ke satu atau beberapa penerima. .
Anda dapat mengirim buletin ke milis
Anda dapat mengirim email "selamat datang" ke anggota baru situs web Anda
Seorang pengguna baru saja melakukan pembelian dan Anda harus mengirimkan tanda terima melalui email

Mengapa keuntungan menggunakan PHPMailer untuk mengirim dan menerima email?

PHPMailer dapat menggunakan server email non-lokal (SMTP) jika Anda memiliki autentikasi. Keuntungan lebih lanjut termasuk. Itu dapat mencetak berbagai jenis pesan kesalahan dalam lebih dari 40 bahasa ketika gagal mengirim email . Ini telah mengintegrasikan dukungan protokol SMTP dan otentikasi melalui SSL dan TLS.

Apakah fungsi surat PHP berfungsi?

PHP mail() tidak mendukung autentikasi SMTP atau penggunaan server SMTP eksternal . Artinya, ini tidak menyediakan fitur daftar blokir atau perlindungan spam, sehingga pesan email Anda dapat dengan mudah masuk ke folder sampah penerima. PHP tidak berhasil mengatur header email dengan benar.