我在我的Bash腳本中有以下代碼。我怎樣才能將正文添加到電子郵件中? 例如:身體:輸出電子郵件差異輸出和電子郵件正文
diff -q file1 file2 || diff file1 file2 | mail -s "subject" "[email protected]"
我在我的Bash腳本中有以下代碼。我怎樣才能將正文添加到電子郵件中? 例如:身體:輸出電子郵件差異輸出和電子郵件正文
diff -q file1 file2 || diff file1 file2 | mail -s "subject" "[email protected]"
假設你有一個mail
程序,瞭解-a
用於連接文件,如S-指甲或mailx的,
if ! diff -q file1 file2; then
diff file1 file2 > something.diff
echo 'body' | mail -s 'subject' -a something.diff '[email protected]'
rm -f something.diff
fi
你可以使用bash的進程替換,以避免臨時文件
diff -q file1 file2 || echo 'body' | mail -s 'subject' -a <(diff file1 file2) '[email protected]'
但附件的文件名只是一些隨機數。
這是我做過什麼
difference=` diff file1 file2 >/dev/null || diff file1 file2`
if [ -n "$difference" ]; then
mail -s " subject " "address" <<EOF
Body here
$difference
Body here
EOF
fi
如果你打算這樣做,那麼'{回聲'身體在這裏'; diff file1 file2;回聲'身體在這裏'; } | mail -s'subject''address''更好,因爲它不需要將diff作爲字符串加載到Bash中。 (當然你可以用'cat << HEREDOC'來代替'echo'。) – ephemient
什麼版本'mail'你有嗎?有些(如[s-nail](https://www.sdaoden.eu/code.html))支持'-a'選項來附加文件。 – ephemient
sendmail-8.14.4-9.el6_8.1.x86_64 – user3508766
真的嗎?這不可能是'rpm -qf/usr/bin/mail'所說的,'sendmail'不提供那個二進制文件。 (這是MTA,不是MUA)。在CentOS上,你可能已經安裝了'mailx'。 – ephemient