Sendmail
如何配置 ‘at’ 和 ‘sendmail’ 以使用 Content-Type: text/html 發送郵件
我正在升級一些批處理程序以生成 html 輸出而不是文本。批處理程序使用 at 命令執行,然後使用 sendmail 命令將所有輸出發送給使用者。
因為 at 命令構成了電子郵件的標題,所以我不知道如何向“at”命令或“sendmail”指示批處理命令的輸出是 HTML 格式。‘at’ 和 ‘sendmail’ 的組合創建標題並用換行符終止標題,因此包含的標題資訊,例如 Content-Type,被認為是正文的一部分。
我的期望是,當現代客戶端閱讀郵件時,內容類型正確設置為“text/html”。
我對任何解決方案都很滿意,包括:命令行選項、環境變數、bash/perl/awk/ 腳本、新批處理執行程序的建議。
從您的腳本中顯式發送消息,而不僅僅是列印輸出並依靠
at
發送消息。將 HTML 寫入文件並用於mutt
附加並發送消息。或者,使用標頭、MIME 結構和所有內容編寫消息,並將其通過管道傳輸到
sendmail -t -i
. 到目前為止,使用mutt
是更簡單的方法。
我認為本地做你正在尋找的東西是不可能的。我不知道有任何
at
實現能夠從工作中對生成的消息頭進行任何真正的更改。但是,您可以將腳本作為生成 HTML 輸出的子程序執行,將該輸出重定向到文件中,並根據需要添加任何周圍的標頭,然後按原樣傳遞整個結果文本 blob
sendmail -bm
*(*並依靠sendmail
找出發件人和收件人欄位)。比如,一個非常人為的例子:
>tempfile echo 'From: nobody@localhost' >>tempfile echo 'To: root@localhost' >>tempfile echo 'Subject: list of files' >>tempfile echo >>tempfile ls -lh $HOME >>tempfile echo 'Add more data here' >>tempfile sendmail -bm <tempfile && rm -f tempfile
可能會大致按照您的意願行事。(當然,您必須調整以上內容以包含所有表明輸出為 HTML 的內容。)