題 從UNIX發送一些文本到郵件,使文本在郵件正文中以某種顏色顯示


我在UNIX中的文件中有一些文本。我使用該文件發送到我的郵箱 mail 命令。我想要的是 文字以某種顏色出現 在郵件的正文中。郵件將從Windows打開。任何幫助將不勝感激。


4
2018-03-09 05:11


起源


這是一個壞主意。 添加 任何 對電子郵件進行格式化會極大地增加將其作為垃圾郵件丟棄的可能性。 - zwol
@zwol轉換電子郵件時。 html可以略微增加其垃圾郵件,正確這樣做不會顯著增加被錯誤分類為垃圾郵件的機率。我知道因為我經營電子郵件服務! - davidgo
非常感謝@zwol在這裡討論垃圾郵件。我需要處理格式化,因為我不希望這封郵件成為收件人的垃圾郵件,因為這對收件人來說非常重要。 +1為此 - learner1


答案:


您需要將內容轉換為HTML,並確保電子郵件的標題包含

Content-Type: text/html; charset=UTF-8

你將如何做到這將取決於你的“郵件”命令是什麼程序,實際上可能是不可能的。你可以修改腳本,將電子郵件注入sendmail或類似的東西,而不是像

echo 'Content-Type: text/html; charset=UTF-8
Subject: My Subject

<html>
<b>Email Header</b>
<br /><br />
<font color="red">This text is red</font>
</html>' | sendmail user@domain.name

請注意,這是一個稍微粗略的實現,除非經過調整,否則更有可能被垃圾郵件過濾器丟棄。


14
2018-03-09 07:22



從你的投資是實用的答案。寫了一篇有一些背景知識的人,因為我覺得編輯那些額外的信息會讓你的回答失真。 - Hennes
<font>?電子郵件世界是否落後於什麼,或者您是否應該以某種形式使用CSS? - Jasper
@Jasper Outlook 2010及以上使用Word的引擎來呈現電子郵件。所以,不,它不是滯後的: 它向後走! Thunderbird非常好,支持內聯CSS和HTML4.01。對於基於Web的服務(Hotmail,GMail,Yahoo ...),您應該盡可能少地使用HTML4.01 排隊 CSS盡可能。 - Ismael Miguel
請不要使用 <br /><br />。你應該用 <h1>Email header</h1> <p><font color="red">This text is red</font></p>。此外,大多數電子郵件客戶端使用HTML4.01,這需要一個 <body>。除此之外,請點! - Ismael Miguel
@Jasper歡迎你。電子郵件世界非常瘋狂!只是讓你看到它有多瘋狂,Outlook Express 6.0和Outlook 2003/2007使用IE來呈現電子郵件,但至少Outlook Express 6.0在看到UTF-8消息時就嚇壞了。它支持它,但會堅持使用您選擇的任何默認編碼。一些基於Web的服務阻止外部CSS(如GMail),其他不支持某些樣式(如我所知,Hotmail不喜歡填充)和Outlook 2010及以上不處理 <div> 標籤(它們被轉換為hacky段落)。電子郵件世界瘋狂瘋狂! - Ismael Miguel


更多davidgo答案的背景:

電子郵件標準並非以顏色或字體支持開頭。因此,無論您嘗試多麼努力,都無法保證收件人能看到任何顏色。

然而,大多數客戶端對郵件的解釋範圍更廣,如果您發送了富文本或網頁,那麼它可能會呈現彩色。或者,如果您確實需要特定標記,則需要將其作為圖片發送(包括所有缺點,sunch因為無法選擇文本或編輯)。

來自Unix平台的基本郵件可以按如下方式發送:

sendmail user_to_mail_to@domain.tld < myfile

或者,如果您喜歡貓或從管道開始:

cat myfile | sendmail user_to_mail_to@domain.tld

或者,通過shell回顯:

echo 'content here' | sendmail user_to_mail_to@domain.tld

所有這些都將發送myfile的內容,沒有主題,沒有顏色,沒有文本標記。只是一個簡單的簡單郵件。這是開始理解基礎知識的好方法。


現在為David回答,它添加了一行告訴mailclient將文本視為HTML('Content-Type:text / html)。大多數郵件客戶端會很高興地認識到這一一些(例如我仍然用來閱讀可疑電子郵件的榆樹)不會。

它還增加了一個非常用戶友好的主題。

最後它使用HTML標記(從...開始) <HTML> 與 </HTML>,粗體標籤和設置顏色的字體設置。在這種情況下為紅色,但您可以使用“color =”FF0000“格式指定任何顏色(在RGB中,在這種情況下,最大值為紅色,不為綠色,不為藍色)。

如果您需要更複雜的可變郵件,那麼shell腳本可以將部件附加到文件,您可以使用第一種方法(sendmail用戶<輸入)來郵寄最終文件。


郵件將從Windows打開。

郵件客戶端在這裡很重要。我希望thunderbird能在Windows上以及Linux或BSD上呈現這一點。類似的我希望mutt失敗,無論是在Windows上還是在BSD上。使用文本替代方法設計多部分郵件可能是個好主意。為此見 RFC1341


7
2018-03-09 07:49



請注意,如果發送圖像或其他二進製文件,(POSIX) cat 需要需要 -v 要么 --show-nonprinting否則會丟失很多非ascii數據。此外,收件人將需要一個特殊的解碼器腳本來轉動 ^ 插入符號轉義序列返回字節。不要先用貓; mail user@domain < myfile 更好,或使用正確處理任意字節的東西。 - cat
我同意。我的第一個例子使用 < 重定向。我試圖完成,但很多人似乎都在使用貓進行測試。我想我可以擴展一下。並可選擇添加uuencode及其更現代的變體。 - Hennes
@Hennes我嘗試將html代碼寫入文件然後重定向,但它現在正在工作甚至 cat file ! mail 也沒有為我工作。只要 呼應 然後 管道 工作。為什麼會這樣? - learner1