Sendmail

如何配置 ‘at’ 和 ‘sendmail’ 以使用 Content-Type: text/html 發送郵件

  • July 17, 2016

我正在升級一些批處理程序以生成 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 的內容。)

引用自:https://unix.stackexchange.com/questions/295776