Saya memiliki perintah cron yang menjalankan file dan saya mencoba mengatur output sehingga mengirimkan email kepada saya. Saya menggunakan ini dengan skrip pihak ke-3 yang saya tidak ingin memodifikasi file langsung, jadi saya perlu menyalurkan output alih-alih memodifikasi PHP.
Saya bermigrasi dari server yang menggunakan mail
ke server yang menggunakan sendmail
. Saya kesulitan menemukan cara mengirim subjek ke sendmail dengan benar melalui baris perintah.
/usr/local/bin/php -f /path/to/file.php 2>&1 | /usr/sbin/sendmail -s "My Test Email Subject" [email protected]
sendmail
adalah biner yang digunakan oleh sistem Anda untuk merutekan email yang dikirimkan kepadanyamail
. Ini adalah bagian dari serangkaian program seperti sendmail , postfix , exim , dan sebagainya. Jadi, Anda perlu menginstal paket yang sesuai untuk surat . Jadi, beri tahu kami distribusi linux yang Anda gunakan.Jawaban:
Itu salah.
Anda harus memiliki
mail
perintah di suatu tempat. Itu bisa disebutmailx
. Harus di/bin/
direktori. Sebagai praktik standar, skrip php tidak boleh memanggil apa pun di/sbin
atau/usr/sbin
. Program sbin biasanya untuk root.Juga, php memiliki fungsi surat bawaan .
sumber
mail
ataumailx
mungkinMail
. Tetapi bahkan jika itu tidak ada, Anda dapat menginstal mutt dan menjalankanmutt -x
yang mengemulasimailx
.which mail
dan kembali/bin/mail
.Pada sistem Debian saya (yang memiliki Exim daripada sendmail "nyata", tetapi masih memiliki biner sendmail untuk kompatibilitas), ketika saya ingin mengirim email dari skrip saya melakukan sesuatu yang setara dengan:
Perhatikan bahwa baris kosong itu penting.
sumber
sendmail -t <<EOF
?sendmail
gagal dan menulis ke STDERR, bagaimana saya bisa menangkap ini sebagai variabel untuk digunakan nanti dalam skrip?echo = Badan email.
sed stuff = Menerapkan tajuk email, dan dua baris penting antara tajuk dan tajuk.
sendmail -t = Memipangnya langsung melalui sendmail.
sumber
sumber