Php mengirim email dengan otentikasi smtp

Kemampuan untuk mengirim pesan email secara terprogram dengan PHP adalah fitur yang digunakan oleh sejumlah besar perangkat lunak sumber terbuka yang ditulis menggunakan bahasa skrip paling terkenal di web. dari phpBB ke WordPress, dari Joomla ke Drupal, dari MantisBT ke MediaWiki tidak ada Forum, CMS, proyek atau platform kerja kolaboratif yang tidak perlu berkomunikasi dengan penggunanya dengan mengirim email. Belum lagi, tentu saja, kebutuhan proyek apa pun yang dilakukan secara mandiri yang mencakup segala jenis pendaftaran, buletin, atau interaksi lainnya dengan pengguna

Cara termudah untuk mengirim email melalui PHP adalah dengan menggunakan fungsi mail() asli, yang tersedia dari PHP4 dan memungkinkan Anda menyelesaikan semuanya dengan pemanggilan metode sederhana dengan cara berikut

PHP

1

$result = email($to, $subject, $message, $additional_headers, $additional_parameters);

Parameter konfigurasi relatif ke server SMTP yang akan disambungkan untuk pengiriman, dan port yang akan digunakan, harus ditentukan di php. file ini - file konfigurasi utama PHP - dengan cara berikut

INI

1

2

3

4

5

email. add_x_header "0"

email. log NULL

email. force_extra_parameters NULL

SMTP "localhost"

smtp_port "25"

Nilai yang ditunjukkan adalah nilai default. untuk rincian tambahan pada masing-masing, baca di sini

Batasan penting segera terlihat. sebenarnya tidak ada cara untuk menentukan nama pengguna dan kata sandi otentikasi untuk server SMTP, suatu kondisi yang sekarang sangat diperlukan di hampir semua server yang tersedia untuk penyedia Italia dan internasional, serta mutlak wajib jika kita ingin memanfaatkannya.

Pada akhirnya, fungsionalitas asli PHP memungkinkan Anda terhubung hanya ke server SMTP yang memungkinkan Anda menggunakannya tanpa autentikasi. Pertanyaannya, dan alasan mengapa Anda menemukan artikel ini adalah. bagaimana kita bisa memecahkan masalah ini?

PHPMailer

Jika kode sumber aplikasi PHP telah ditulis atau diubah oleh Anda, solusi terbaik untuk mengatasi masalah tersebut adalah berhenti menggunakan fitur asli PHP yang ditawarkan oleh fungsi mail(), menggantinya dengan alat, utilitas, atau pustaka yang lebih canggih dengan tambahan . di antara banyak yang ada di pasaran, saya ingin merekomendasikan PHPMailer yang luar biasa, perpustakaan sumber terbuka yang menjalankan semua fitur yang terkait dengan pengiriman email melalui PHP dengan sangat baik dan itu tidak akan pernah membuat Anda menyesali fungsi mail()

Untuk menginstalnya cukup sertakan kelasnya dalam proyek Anda menggunakan Composer/Packagist atau, jika Anda lebih suka cara lama dalam melakukan hal-hal ini, unduh versi terbaru dari repositori GitHub dan sertakan/wajibkan kelas Autoload PHPMailer

PHP

1

2

3

4

5

6

    memerlukan 'PHPMailerAutoload. php';

 

    $mail = baru PHPMailer;

    // kode Anda di sini

?>

Untuk informasi tambahan tentang penginstalan dan penggunaan PHPMailer, silakan merujuk ke dokumen resmi PHPMail

Kirim email (Linux)

Jika Anda memiliki kebutuhan mutlak untuk mengirim email melalui fungsi mail() - misalnya karena Anda memiliki satu atau lebih perangkat lunak yang ditulis dalam PHP yang tidak dapat melakukannya tanpanya sama sekali dan/atau tidak memiliki opsi pengiriman alternatif - cara termudah

Kerang

1

sudo apt-dapatkan pasang sendmail

dan mudah dikonfigurasi di file php. ini dengan one-liner berikut

INI

1

sendmail_path = /usr/sbin/sendmail -t -i -F"Full Name" -f'[email protected]'

Setelah penyiapan, SendMail dapat dikonfigurasi menggunakan konfigurasi baris perintah seperti wizard dengan mengetik sudo sendmailconfig  terminal command, or by manually modifying the settings in the /etc/mail/sendmail.conf   file konfigurasi. dalam kedua cara Anda akan dapat menentukan kredensial apa pun untuk mengakses server, sehingga mengatasi batasan yang diberlakukan oleh fungsionalitas PHP asli.

Untuk info tambahan tentang proyek SendMail, kami sangat menyarankan untuk melihat situs web resmi Sendmail

sSMTP dan Postfix

Jika Anda mencari alternatif yang lebih sederhana untuk mengonfigurasi selain Sendmail, Anda juga dapat menggunakan  sSMTP - Agen Transfer Surat (MTA) minimalis yang dapat diinstal dan dikonfigurasi untuk bertindak sebagai pengganti drop-in untuk Sendmail. meskipun memiliki beberapa keterbatasan dibandingkan dengan kakaknya, ini pasti lebih mudah dan lebih cepat untuk diatur. Untuk mengetahui lebih lanjut, Anda dapat membaca postingan yang kami terbitkan beberapa bulan lalu yang menjelaskan cara menginstal dan mengonfigurasi sSTMP daripada Sendmail

Sebaliknya, jika Anda menginginkan alternatif yang lebih baik dan canggih, Anda dapat menginstal Postfix, yang juga merupakan pengganti drop-in untuk Sendmail dengan fitur tambahan dan pendekatan yang lebih aman

Sendmail Palsu (Windows)

Bagaimana jika Anda tidak memiliki sistem berbasis Linux? . Namanya Fake Sendmail dan tersedia gratis di tautan ini. Meskipun penulis (Byron Jones) tidak lagi mengembangkan proyek, versi terbaru yang tersedia (dibuat dengan Delphi 2007 dan tertanggal 2011) bekerja dengan sempurna di semua versi utama Windows Server, termasuk Windows Server 2012 R

Untuk memasang Fake Sendmail ikuti petunjuk yang dijelaskan di situs web resmi. unduh versi terbaru program dan bongkar arsip dalam folder pilihan Anda (seperti  C. \PHP\fake_sendmail\ . buka   ): open the sendmail. ini file konfigurasi dengan editor teks dan mengonfigurasinya dengan parameter layanan SMTP yang ingin Anda sambungkan.

INI

1

2

3

4

5

6

7

[kirim email]

smtp_server=<smtp_server_address>

smtp_port=25

smtp_ssl=otomatis

error_logfile=kesalahan. log

auth_username="

auth_password="

Setelah ini selesai, Anda hanya perlu mengatur parameter yang sesuai di php. ini menunjukkan jalur yang dapat dieksekusi dengan cara berikut

INI

1

sendmail_path = "C. \Programmi\PHP\fake_sendmail\sendmail. exe -t"

Untuk informasi lebih lanjut tentang parameter, lihat dokumentasi resmi PHP sendmail_path

PENTING. Di Windows 8, 8. 1, 10 dan platform Windows Server 2012, Anda mungkin perlu mengonfigurasi Fake Sendmail yang dapat dijalankan untuk dijalankan dari sistem dengan hak administrator. Untuk melakukan ini, cukup klik kanan pada sendmail. exe dan, di tab Kompatibilitas, setel mode kompatibilitas Windows XP Paket Layanan 3 dan aktifkan kotak centang Jalankan sebagai Administrator. Ingatlah untuk menambahkan ke folder izin keamanan pengguna IUSR, IIS_IUSRS dan/atau Layanan Jaringan - tergantung bagaimana Anda mengonfigurasi IIS - dalam mode baca dan tulis

Server SMTP internal

Jika Anda perlu menggunakan fungsi mail() asli dan tidak ingin menggunakan metode yang dijelaskan di atas, Anda selalu dapat mengonfigurasi layanan SMTP di lingkungan lokal Anda untuk penggunaan internal, yang dapat Anda gunakan untuk mengirim email secara langsung. Jika Anda menggunakan Windows, saya hanya dapat merekomendasikan hMailServer, server SMTP sumber terbuka yang bagus untuk Windows yang telah kami bahas secara luas dalam posting ini

Terlepas dari Mail Server yang Anda gunakan, layanan harus dikonfigurasi untuk menerima koneksi tanpa autentikasi pada permintaan untuk mengirim dari IP lokal web farm Anda (atau, jika diinstal pada mesin yang sama dengan Server Web, dari localhost). Dengan cara ini Anda akan memiliki sistem "terbuka" (untuk PHP) tetapi pada saat yang sama aman, karena pembukaan ini tidak akan memengaruhi akses apa pun dari IP eksternal

Kesimpulan

Di sini berakhir ikhtisar kami tentang kemungkinan alternatif untuk fungsi mail() PHP. seperti biasa, pilihan terbaik hanya bergantung pada kebutuhan khusus konfigurasi Anda dan karakteristik produk PHP yang beroperasi di mesin Anda. Pilihan untuk mengadopsi library seperti PHPMailer tentu yang terbaik saat Anda memiliki kendali atas kode sumber, sedangkan konfigurasi Sendmail atau Fake Sendmail lebih cocok jika Anda telah menginstal produk "tetap" seperti WordPress atau Joomla. Tentu saja - jika Anda ingin memiliki kendali sebanyak mungkin atas pengiriman dan penerimaan - pilihan untuk melengkapi diri Anda dengan server SMTP internal bisa dibilang yang terbaik, asalkan Anda memiliki pengetahuan teknis yang diperlukan dan sistem yang cukup andal

Bagaimana cara mengirim email dari skrip PHP menggunakan otentikasi SMTP?

Contoh Skrip PHP PEAR Mail Untuk SMTP Mail . ". $mail->getMessage(). " Pesan berhasil terkirim. Make sure to enter your web mail server name in the host variable, and use your login information for your web mail host in the username and password fields. " . $mail->getMessage() . " Message successfully sent!

Apakah surat PHP menggunakan SMTP?

PHP mailer menggunakan Simple Mail Transmission Protocol (SMTP) untuk mengirim email . Di server yang dihosting, pengaturan SMTP sudah ditetapkan. Pengaturan email SMTP dapat dikonfigurasi dari “php. ini” di folder instalasi PHP.

Bagaimana cara mengirim email tanpa server SMTP di PHP?

php $mail = new PHPMailer(true); . gmail. com"; // menyetel GMAIL sebagai server SMTP $mail->

Bagaimana cara mengirim email otomatis di PHP?

PHP memanfaatkan fungsi mail() untuk mengirim email. Fungsi ini memerlukan tiga argumen wajib yang menentukan alamat email penerima, subjek pesan, dan pesan sebenarnya, selain itu ada dua parameter opsional lainnya. mail( ke, subjek, pesan, tajuk, parameter );