mail -s "subject" [email protected] <test.html
berfungsi, tetapi hanya untuk email teks biasa.
Apa cara yang benar untuk mengirim email HTML menggunakan perintah Linux mail ?
Jawaban yang Diterima:
Ada banyak versi berbeda dari mail sekitar. Saat Anda melampaui mail -s subject [email protected] [email protected] <body (untuk pengiriman, itu saja jaminan POSIX — dan bahkan -s tidak ada di masa lalu), mereka cenderung memiliki opsi baris perintah yang berbeda. Menambahkan header tambahan tidak selalu mudah.
-
Dengan beberapa
mailximplementasi, mis. darimailutilsdibsd-mailxUbuntu atau Debian , mudah, karena ada opsi untuk itu.mailx -a 'Content-Type: text/html' -s "Subject" [email protected] <test.html -
Dengan
mailxPusaka , tidak ada cara yang nyaman. Satu kemungkinan untuk menyisipkan tajuk arbitrer adalah dengan mengatureditheaders=1dan gunakan editor eksternal (yang bisa berupa skrip).## Prepare a temporary script that will serve as an editor. ## This script will be passed to ed. temp_script=$(mktemp) cat <<'EOF' >>"$temp_script" 1a Content-Type: text/html . $r test.html w q EOF ## Call mailx, and tell it to invoke the editor script EDITOR="ed -s $temp_script" heirloom-mailx -S editheaders=1 -s "Subject" [email protected] <<EOF ~e . EOF rm -f "$temp_script" -
Dengan
mailxPOSIX umum , saya tidak tahu cara membuka header.
Jika Anda akan menggunakan mail atau mailx , perlu diingat bahwa
- Ini tidak portabel bahkan dalam distribusi Linux tertentu. Misalnya, Ubuntu dan Debian memiliki beberapa alternatif untuk
maildanmailx. - Saat menulis pesan,
maildanmailxmemperlakukan baris yang dimulai dengan~sebagai perintah. Jika Anda mengirim teks kemail, Anda perlu mengatur agar teks ini tidak berisi baris yang diawali dengan~.
Jika Anda tetap akan menginstal perangkat lunak, sebaiknya Anda menginstal sesuatu yang lebih dapat diprediksi daripada mail /Mail /mailx . Misalnya, mut. Dengan Mutt, Anda dapat menyediakan sebagian besar header di input dengan -H opsi, tetapi bukan Content-Type , yang perlu disetel melalui opsi mutt.
mutt -e 'set content_type=text/html' -s 'hello' '[email protected]' <test.html
Atau Anda dapat memanggil sendmail secara langsung. Ada beberapa versi sendmail di luar sana, tetapi mereka semua mendukung sendmail -t untuk mengirim surat dengan cara yang paling sederhana, membaca daftar penerima dari surat. (Saya pikir mereka tidak semua mendukung Bcc: .) Pada kebanyakan sistem, sendmail tidak dalam $PATH biasa , ada di /usr/sbin atau /usr/lib .
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: [email protected]
Subject: hello
Content-Type: text/html
EOF