以下のスクリプトは、私のLinuxサーバーで正常に動作します。
(
echo "From: [email protected]";
echo "To: [email protected]";
echo "Subject: Test Subject";
echo "Content-Type: text/html";
echo "MIME-Version: 1.0";
echo "";
echo "<html><head><title>HTML E-mail</title></head>
<body><p>Test Body Message</p></body></html>";
) | sendmail -t
しかし、以下のようにスクリプトを変更すると、「ヘッダーに受信者アドレスが見つかりません」というエラーが表示されます。 変数を使用して以下のコードを実行することは可能ですか。sendmail以外のファイルや他のメールコマンドを使用したくありません。
var1='(
echo "From: [email protected]";
echo "To: [email protected]";
echo "Subject: Test Subject";
echo "Content-Type: text/html";
echo "MIME-Version: 1.0";
echo "";
echo "<html><head><title>HTML E-mail</title></head>
<body><p>Test Body Message</p></body></html>";
)'
echo ${var1} | sendmail -t
コマンド置換は行末をスペースで置き換えます。
;"
の代わりに";
を使用してくださいtr \; '\n'
を使用します。To:
行を最初にこの結果、どういうわけか醜い
var1=$(
echo "To: [email protected];"
echo "From: [email protected];"
echo "Subject: mail HTML ;"
echo "Content-Type: text/html;"
echo "MIME-Version: 1.0;"
echo ";"
echo "<html><head><title>HTML E-mail</title></head>
body><p>Test Body Message</p></body></html>"
)
## can be one-lined, pipe symbol (|) continue line.
echo ${var1} | tr \; '\n' |
awk 'length == 1 || NR == 1 {print $0} length && NR > 1 { print substr($0,2) }' |
sendmail -t
しかし、これはいくつかのhtmlコード(á
がá
に変わるなど)を壊します。今日、メールで添付ファイルを送信できることを知っていますか?
man mail
-A, --attach=FILE attach FILE
mail -A <(generate HTML result) [email protected]
変数定義からエコーコマンドを削除します。