mail -s "subject" [email protected] <test.html
は機能しますが、プレーンテキストのメールのみが対象です。
Linuxコマンドmail
を使用してHTMLメールを送信する正しい方法は何ですか?
#!/bin/sh
(
echo "To: [email protected]"
echo "Subject: hello"
echo "Content-Type: text/html"
echo
echo "<html><b><font size='7'>H</font>Ello</b></html>"
echo
) | /usr/sbin/sendmail -t
先祖伝来のmailxでは、便利な方法は
mailx -s "$(echo -e "Newsletter issue 3\nContent-Type: text/html")" [email protected] < /tmp/htmlmail.txt
ありがとう、 デュード
Fedora 17でテストされ、機能しました
追加する必要がありますContent-Type
これを実現するためのメールのヘッダー。
echo "<html><b>Hello</b></html>" | mail -a "Content-type: text/html;" -s "Testing" [email protected]
働くでしょう
Heirloom-mailxを使用すると、sendmailプログラムをフックスクリプトに変更し、そこでヘッダーを置き換えてから、sendmailを使用できます。
私が使用するスクリプト(~/bin/sendmail-mailx-hook
):
#!/bin/bash
sed '1,/^$/{
s,^\(Content-Type: \).*$,\1text/html; charset=utf-8,g
s,^\(Content-Transfer-Encoding: \).*$,\18bit,g
}' | sendmail $@
このスクリプトは、メールヘッダーの値を次のように変更します。
Content-Type:
〜text/html; charset=utf-8
Content-Transfer-Encoding:
〜8bit
(これが本当に必要かどうかわからない)。HTMLメールを送信するには:
mailx -Ssendmail='~/bin/sendmail-mailx-hook' -s "subject" [email protected] < test.html
この方法は一時ファイルを作成せず、ストリームをその場で修正するだけなので、@ Gillesが提案した方法よりも効果的です。
私は以下のスクリプトを使用して起こりました
#!/bin/ksh
(
echo "To: [email protected]"
echo "Subject: Job Status"
echo "Content-Type: text/html"
echo
echo "<html>
<head>
<title>Status of the jobs during the day</title>
<style>
table, th, td {
border: 1px solid blue;
border-collapse: collapse;
}
th, td {
padding: 5px;
}
</style>
</head>
<body>
<table style='width:100%'>
<tr bgcolor='#808080'>
<th>Job Name</th>
<th>System name</th>
<th>Status</th>
</tr>
<tr>
<td>Job-1</td>
<td>Sys</td>
<td>Sucess</td>
</tr>
<tr>
<td>Job-2</td>
<td>sys</td>
<td>Failure</td>
</tr>
<tr>
<td>Job-3</td>
<td>sys</td>
<td>Sucess</td>
</tr>
</table>
</body></html>"
echo
) | /usr/sbin/sendmail -t
私にとっては、SMTPサーバーなどの変数を指定する必要があったので、mailコマンドは以下のように機能しました。多くの投稿を検索したところ、本文の下をtext/htmlに変換するプロパティが見つかりました。今、私が受け取る電子メールはHTML形式です。
Content-Disposition:インライン
Unixバージョン:Red Hat Enterprise Linux Server release 6.6(Santiago)
最初。スクリプトに必要な情報を作成します(testSql.sh)
echo "<html><body><pre>"
mysql -u USERNAME -pPASSWORD -P PORTNUMBER -h HOSTNAME DBNAME --table -e "select columns from tablename where member in ('value1','value2')"
echo "</pre></body></html>"
第二。そのスクリプトをmailコマンドにパイプします
./testSql.sh | mail -v -S smtp=smtp://IP:PORTNUMBER -s "$(echo -e "This is the subject\nContent-Type: text/ht ml\nMIME-Version: 1.0\nContent-Disposition: inline")" [email protected]
これを行うことにより、メールで以下のような情報を取得します。
Content-Disposition:インラインMessage-ID:User-Agent:Heirloom mailx 12.4 7/29/08 MIME-Version:1.0 Content-Type:text/plain; charset = us-ascii Content-Transfer-Encoding:7bit Value1 Value2
TestSql.shで行われたHTMLタグ付けによるValue1およびValue2
別のスレッドで投稿されましたが、基本的には私たちのバージョンのmail/mailx(12.5+)では、添付ファイルが追加され、追加のヘッダーの代替パラメーターが見つからなかったため、メールの-aパラメーターは機能しなくなりました。私はsendmailを使うことでした。
以下は、私たちのために機能するbashスクリプトで実行するために作成した単純な1ライナーです。基本的にはContent-Type:text/html、subject、bodyを渡して動作します。
printf "Content-Type: text/html\nSubject: Test Email\nHTML BODY<b>test bold</b>" | sendmail <Email Address To>
変数からHTMLページ全体を作成したい場合、bashスクリプトで使用した別の方法は、以下のように変数を渡すことでした。
emailBody="From: <Email Address From>
Subject: Test
Content-Type: text/html; charset=\"us-ascii\"
<html>
<body>
body
<b> test bold</b>
</body>
</html>
"
echo "$emailBody" | sendmail <Email Address To>