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
?
sumber
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
?
Ada banyak versi berbeda mail
. Ketika Anda melampaui mail -s subject to1@address1 to2@address2 <body
(untuk mengirim, itu semua jaminan POSIX - dan bahkan -s
tidak ada di masa lalu ), mereka cenderung memiliki opsi baris perintah yang berbeda. Menambahkan tajuk tambahan tidak selalu mudah.
Dengan beberapa mailx
implementasi, misalnya dari mailutils
Ubuntu atau Debianbsd-mailx
, mudah, karena ada opsi untuk itu.
mailx -a 'Content-Type: text/html' -s "Subject" to@address <test.html
Dengan Heirloom mailx
, tidak ada cara yang nyaman. Satu kemungkinan untuk memasukkan header yang berubah-ubah adalah dengan mengatur editheaders=1
dan menggunakan 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" to@address <<EOF
~e
.
EOF
rm -f "$temp_script"
Dengan POSIXmailx
umum , saya tidak tahu cara mendapatkan header.
Jika Anda akan menggunakan mail
atau mailx
, ingatlah itu
mail
dan mailx
.mail
dan mailx
memperlakukan baris yang dimulai dengan ~
sebagai perintah. Jika Anda memasukkan teks ke dalam mail
, Anda perlu mengatur agar teks ini tidak mengandung baris yang diawali dengan ~
.Jika Anda tetap akan menginstal perangkat lunak, Anda mungkin juga menginstal sesuatu yang lebih dapat diprediksi daripada mail
/ Mail
/ mailx
. Misalnya, mutt . Dengan Mutt, Anda dapat memasok sebagian besar header di input dengan -H
opsi, tetapi tidakContent-Type
, yang perlu diatur melalui opsi mutt.
mutt -e 'set content_type=text/html' -s 'hello' 'to@address' <test.html
Atau Anda bisa memohon sendmail
langsung. Ada beberapa versi di sendmail
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 sebagian besar sistem, sendmail
tidak seperti biasanya $PATH
, ada di /usr/sbin
atau /usr/lib
.
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: to@address
Subject: hello
Content-Type: text/html
EOF
sumber
mail
.Dengan mailx Heirloom, cara yang mudah adalah
Terima kasih, Bung
Diuji pada Fedora 17, dan bekerja
sumber
Anda harus menambahkan
Content-Type
tajuk ke email Anda untuk mewujudkannya.akan bekerja
sumber
mailx
? Itu mungkin memiliki opsi. Jika itu tidak berhasil. Jika itu tidak berhasil, Anda dapat mempertimbangkan menggunakan mutt meskipun saya tidak tahu apa yang harus dilakukan oleh baris perintah.Dengan heirloom-mailx Anda dapat mengubah program sendmail menjadi skrip hook Anda, ganti header di sana dan kemudian gunakan sendmail.
Skrip yang saya gunakan (
~/bin/sendmail-mailx-hook
):Script ini mengubah nilai-nilai di header surat sebagai berikut:
Content-Type:
untuktext/html; charset=utf-8
Content-Transfer-Encoding:
ke8bit
(tidak yakin apakah ini benar-benar diperlukan).Untuk mengirim email HTML:
Metode ini lebih efektif daripada yang diusulkan oleh @Gilles karena tidak membuat file sementara dan hanya memperbaiki aliran on-the-fly.
sumber
Saya telah menggunakan skrip di bawah ini untuk terjadi
sumber
Bagi saya, saya perlu menentukan variabel seperti SMTP server, sehingga perintah mail bekerja dengan cara di bawah ini. Saya mencari di banyak posting, dan saya menemukan properti di bawah ini untuk mengubah tubuh menjadi teks / html. Sekarang email yang saya terima adalah dalam format HTML.
Versi Unix: Red Hat Enterprise Linux Server rilis 6.6 (Santiago)
Pertama. Buat informasi apa pun yang diperlukan ke dalam skrip (testSql.sh)
Kedua. Pipa skrip itu ke perintah email
Dengan melakukan ini saya mendapatkan informasi seperti di bawah ini di email:
Value1 dan Value2 sesuai dengan penandaan HTML yang dilakukan di testSql.sh
sumber
sumber