如何使用shell腳本發送HTML郵件?使用shell腳本發送HTML郵件
回答
首先你需要撰寫郵件。最低限度是由這兩個頭:
MIME-Version: 1.0
Content-Type: text/html
...及相應的郵件正文:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
一旦你擁有了它,你可以通過適當的信息給mail命令:
body = '...'
echo $body | mail \
-a "From: [email protected]" \
-a "MIME-Version: 1.0" \
-a "Content-Type: text/html" \
-s "This is the subject" \
[email protected]
這是一個過於簡單的例子,因爲你還需要照顧字符集,編碼,行的最大長度的......但是,這是基本的想法。
或者,您可以使用Perl或PHP而不是純shell編寫您的腳本。
更新
shell腳本基本上是Unix行結尾的一個文本文件,用一條線叫shebang告訴殼開始什麼解釋它必須通過文件,按照解釋理解語言中的一些命令並具有執行權限(在Unix中是文件屬性)。例如,假設您保存下列爲hello-world
:
#!/bin/sh
echo Hello, world!
然後分配執行權限:
chmod +x hello-world
你終於可以運行它:
./hello-world
無論如何,這是一種與原始問題無關。在進行高級任務之前,您應該熟悉基本的shell腳本。在這裏,你有幾個鏈接對慶典,一個流行的shell:
http://www.gnu.org/software/bash/manual/html_node/index.html
的標籤包括 'sendmail的' 所以這裏使用的解決方案:
(
echo "From: m[email protected] "
echo "To: [email protected] "
echo "MIME-Version: 1.0"
echo "Content-Type: multipart/alternative; "
echo ' boundary="some.unique.value.ABC123/server.xyz.com"'
echo "Subject: Test HTML e-mail."
echo ""
echo "This is a MIME-encapsulated message"
echo ""
echo "--some.unique.value.ABC123/server.xyz.com"
echo "Content-Type: text/html"
echo ""
echo "<html>
<head>
<title>HTML E-mail</title>
</head>
<body>
<a href='http://www.google.com'>Click Here</a>
</body>
</html>"
echo "------some.unique.value.ABC123/server.xyz.com--"
) | sendmail -t
sendmail的包裝可以使這項工作更容易,例如,mutt:
mutt -e 'set content_type="text/html"' [email protected] -s "subject" < message.html
echo'boundary =「some.unique.value.ABC123/server.xyz.com」'有什麼用? – Tree 2010-07-27 14:26:33
什麼是回聲「--some.unique.value.ABC123/server.xyz.com」 – Tree 2010-07-27 14:28:50
「--some.unique.value ...」,它對應於'boundary =「some.unique。值...「,是MIME分離多部分消息的方式。當它看到它時,它知道接下來是一個新的部分,並且它應該回到解析標題。這個例子比它更復雜一些,因爲多部分的東西不是絕對必要的,但是如果你發送HTML郵件,這不是一個壞主意。 – cHao 2010-07-30 18:03:06
另一個選項是sendEmail腳本http://caspian.dotconf.net/menu/Software/SendEmail/,它還允許您將消息類型設置爲html並將文件包含爲消息正文。詳情請參閱鏈接。
外殼發送HTML電子郵件 - Unix和Linux論壇
http://www.unix.com/shell-programming-scripting/80973-shell-send-html-email.html
從shell腳本發送電子郵件 - Shell腳本
另一種選擇是使用msmtp會。
你需要做的是設置您的.msmtprc像這樣的東西(例如使用Gmail):
account default
host smtp.gmail.com
port 587
from [email protected]
tls on
tls_starttls on
tls_trust_file ~/.certs/equifax.pem
auth on
user [email protected]
password <password>
logfile ~/.msmtp.log
然後只要致電:
在腳本(echo "Subject: <subject>"; echo; echo "<message>") | msmtp <[email protected]>
更新:對於HTML郵件,您也必須放置標題,因此您可能需要製作如下文件:
From: [email protected]
To: [email protected]
Subject: Important message
Mime-Version: 1.0
Content-Type: text/html
<h1>Mail body will be here</h1>
The mail body <b>should</b> start after one blank line from the header.
和郵件像
cat email-template | msmtp [email protected]
同樣可以通過命令行來進行爲好,但它可能會使用一個文件更容易。
除了由MDMA正確答案,你也可以使用郵件命令如下:
郵件[email protected] -s 「主題這裏的」 -a「的Content-Type:text/html的; charset = \「us-ascii \」「
你會得到你要找的。不要忘記在電子郵件中加入「」和「」。下面是一個簡單的腳本我用電子郵件中的HTML每日報告:
#/ bin/sh的
(貓/path/to/tomorrow.txt
的mysql -h mysqlserver -u用戶-p密碼數據庫-H -e「選擇語句;」
echo「」)|電子郵件@電子郵件。COM -s 「明天的訂單截至目前」 -a 「的Content-Type:text/html的;字符集= \」 US-ASCII \ 「」
到目前爲止,我已經發現了兩個在cmd中的Linux快速的方法
- 使用舊學校的郵件
mail -s "$(echo -e "This is Subject\nContent-Type: text/html")" [email protected] < mytest.html
- 使用狗
mutt -e "my_hdr Content-Type: text/html" [email protected] -s "subject" < mytest.html
cat > mail.txt <<EOL
To: <email>
Subject: <subject>
Content-Type: text/html
<html>
$(cat <report-table-*.html>)
This report in <a href="<url>">SVN</a>
<html>
EOL
sendmail -t < mail.txt
可能會也可能不會工作,完全取決於使用的sendmail。 – eis 2015-10-28 16:35:54
MIME頭和,也解決可以包含在HTML文件中它的自我。
命令
cat cpu_alert.html | /usr/lib/sendmail -t
cpu_alert.html文件樣本。
From: [email protected]
To: [email protected]
Subject: CPU utilization heigh
Mime-Version: 1.0
Content-Type: text/html
<h1>Mail body will be here</h1>
The mail body should start after one blank line from the header.
- 1. 如何使用shell腳本中的郵件發送html文件?
- 2. 從Ubuntu的shell腳本發送郵件
- 3. 從shell腳本發送郵件
- 4. 從UNIX shell腳本發送郵件
- 5. 通過shell腳本發送郵件
- 6. 從linux shell腳本發送郵件
- 7. 用PHP腳本發送HTML郵件
- 8. 使用shell腳本和發送郵件進行日誌監控
- 9. 從php腳本發送html郵件
- 10. 使用shell腳本發送電子郵件給電子郵件組
- 11. 使用VB腳本發送郵件?
- 12. Cronjob調用Shell腳本發送空郵件
- 13. 如何發送電子郵件在我的shell腳本條件
- 14. 使用shell腳本發送動態Html消息
- 15. 停止shell腳本發送重複的電子郵件 - 使用文件標誌
- 16. 使用SAP Workflow「發送郵件」活動發送HTML郵件
- 17. 使用typo3郵件從外部php腳本發送郵件
- 18. VB腳本發送郵件 - 等到發送郵件
- 19. 用Java腳本發送郵件?
- 20. 在asp.net發送郵件腳本用c#
- 21. 如何通過郵件從shell腳本發送特殊字符?
- 22. 如何在電子郵件shell腳本中發送stderr(灰)
- 23. 通過從php運行shell腳本發送郵件
- 24. 使用應用程序腳本使用郵件發送附件
- 25. 使用bash shell腳本的HTML格式電子郵件
- 26. [KSH]如何使用shell腳本創建html郵件?
- 27. 應用腳本 - 發送過濾表作爲HTML電子郵件
- 28. 用於發送電子郵件的HTML腳本
- 29. 用HTML表單和PHP腳本發送邀請電子郵件
- 30. 電子郵件發送通過Perl腳本,但不是shell腳本
什麼是錯是給出了答案,作爲郵件的命令是從一個shell腳本你最好的選擇?你在尋找什麼,或者他的回答缺乏什麼,你決定給它一個獎勵? – 2010-07-25 16:23:45
因爲我沒有很好地理解答案。但所有其他人都能夠理解,但我無法做到...... – Tree 2010-07-26 13:44:25
然後說出來。如果你不明白,不要安靜。要求澄清答案。 – Anders 2010-07-26 13:50:08