
我正在嘗試從 CentOS 伺服器向用戶發送 HTML 電子郵件。從長遠來看,我將建立一個 COBOL 程序,該程序運行命令以向用戶發送報告。
以下是一些細節。
- CentOS 6.4
- 月活躍用戶:郵件
- MTA:後綴 2.6.6
- Postfix 透過交換伺服器運作中繼。
至於我嘗試運行的命令。我今天看到最多的就是下面這個。
$ mailx -a 'Content-Type: text/html' -s "Command Line Test" [email protected] < ./bodytext.html
運行顯示的命令後,我收到一條錯誤訊息「Content-Type:text/html:沒有這樣的檔案或目錄」。我很確定在某個更新之後,他們停止允許 -a 作為內容類型指定的標誌。
我還嘗試將“Content-Type: text/html”添加到實際的 bodytext.html 檔案中作為第一行。我有點不知道如何發送 HTML 電子郵件。我發現的一些消息來源說 mailx 和 postfix 無法正確發送 HTML 電子郵件。希望情況並非如此,但如果確實如此,我想知道您對其他 MAU 和 MTA 技術有何看法?
答案1
由於您似乎可以完全控制生成的文本文件,因此最簡單且可能最便攜的方法是/usr/sbin/sendmail
直接參與。
/usr/sbin/sendmail -t < complete-mail.txt
這需要您自己添加所有重要的標頭(From
、To
、Subject
和Content-Type
)。該文件應如下所示:
From: Company <[email protected]>
To: Customer <[email protected]>
Subject: You are awesome
Content-Type: text/html
<html>…</html>
Postfix 將添加缺少但必需的標頭,例如Date
.
答案2
您甚至閱讀過手冊嗎mailx
,尤其是-a
選項?
-a file
將給定文件附加到訊息中。
從吉爾斯回答,因為 CentOS 使用的是這個版本mailx
:
與傳家寶信箱,沒有方便的方法。插入任意標頭的一種可能性是設定 editheaders=1 並使用外部編輯器(可以是腳本)。
## 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"
Postfix當然可以寄HTML郵件。