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
mailx
implementasi, mis. darimailutils
dibsd-mailx
Ubuntu atau Debian , mudah, karena ada opsi untuk itu.mailx -a 'Content-Type: text/html' -s "Subject" [email protected] <test.html
-
Dengan
mailx
Pusaka , tidak ada cara yang nyaman. Satu kemungkinan untuk menyisipkan tajuk arbitrer adalah dengan mengatureditheaders=1
dan 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
mailx
POSIX 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
mail
danmailx
. - Saat menulis pesan,
mail
danmailx
memperlakukan 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