Email
使用 sendmail 命令發送儲存在變數中的 html 格式郵件
下面的腳本在我的 Linux 伺服器上執行良好。
( echo "From: name@xyz.com"; echo "To: name2@xyz.com"; echo "Subject: Test Subject"; echo "Content-Type: text/html"; echo "MIME-Version: 1.0"; echo ""; echo "<html><head><title>HTML E-mail</title></head> <body><p>Test Body Message</p></body></html>"; ) | sendmail -t
但是在如下修改腳本後,它顯示錯誤為“在標頭中找不到收件人地址”。是否可以使用變數來鍛煉以下程式碼。我不想使用除 sendmail 之外的任何文件或任何其他郵件命令。
var1='( echo "From: name@xyz.com"; echo "To: name2@xyz.com"; echo "Subject: Test Subject"; echo "Content-Type: text/html"; echo "MIME-Version: 1.0"; echo ""; echo "<html><head><title>HTML E-mail</title></head> <body><p>Test Body Message</p></body></html>"; )' echo ${var1} | sendmail -t
命令替換將用空格替換行尾。
- 使用
;"
而不是";
- 用於
tr \; '\n'
重新啟用行尾。- 使用 awk 將第一個字元縮進為空格
To:
先放行這導致某種醜陋
var1=$( echo "To: name2@xyz.com;" echo "From: name@xyz.com;" echo "Subject: mail HTML ;" echo "Content-Type: text/html;" echo "MIME-Version: 1.0;" echo ";" echo "<html><head><title>HTML E-mail</title></head> body><p>Test Body Message</p></body></html>" ) ## can be one-lined, pipe symbol (|) continue line. echo ${var1} | tr \; '\n' | awk 'length == 1 || NR == 1 {print $0} length && NR > 1 { print substr($0,2) }' | sendmail -t
然而,我打破了一些 html 程式碼(比如
á
轉向á
),你知道現在郵件可以發送附件嗎?man mail
-A, --attach=FILE attach FILE
mail -A <(generate HTML result) foo@exemple.com