mail -s "subject" [email protected] <test.html
うまくいきますが、プレーンテキストの電子メールにのみ適用されます。
Linuxコマンドを使用してHTMLメールを送信する正しい方法は何ですかmail
?
答え1
周辺にはさまざまなバージョンがありますmail
。超越する時mail -s subject to1@address1 to2@address2 <body
(送ればそれだよ)POSIX保証 --s
存在しません。過去)、コマンドラインオプションが異なる場合が多いです。追加のヘッダーを追加することは必ずしも簡単ではありません。
mailx
以下のいくつかの実装を通じてmailutils
UbuntuからまたはDebianbsd-mailx
、オプションがあるので簡単です。mailx -a 'Content-Type: text/html' -s "Subject" to@address <test.html
とともに家族家宝
mailx
、便利な方法はありません。任意のヘッダーを挿入する1つの方法は、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"
一般とともにPOSIX
mailx
、タイトルを取得する方法がわからない。
使用したりmail
覚えてmailx
いる場合
- これは、特定のLinuxディストリビューション内でも移植可能ではありません。たとえば、UbuntuとDebianにはさまざまな
mail
選択肢がありますmailx
。 - メッセージを作成するときから始まる行は
mail
コマンドmailx
と見なされます~
。にテキストをパイプする場合は、mail
テキストにで始まる行が含まれないようにソートする必要があります~
。
とにかくソフトウェアをインストールするには、mail
//よりMail
予測可能なものをインストールすることをお勧めしますmailx
。例えば、愚か。 Muttを使用すると、次のオプションを使用して入力にほとんどのヘッダーを提供できます-H
。しかし、Content-Type
、muttオプションで設定する必要があります。
mutt -e 'set content_type=text/html' -s 'hello' 'to@address' <test.html
または電話してもいいです。sendmail
まっすぐ。複数のバージョンがありますが、sendmail
すべてsendmail -t
電子メールから受信者のリストを読む最も簡単な方法で電子メールを送信することをサポートしています。 (私はそれらがすべてそれをサポートしているとは思わないBcc:
。)ほとんどのシステムではsendmail
一般的なシステムではない$PATH
が、または。/usr/sbin
/usr/lib
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: to@address
Subject: hello
Content-Type: text/html
EOF
答え2
#!/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
答え3
Heirloom mailxを使うと便利な方法は次のとおりです。
mailx -s "$(echo -e "Newsletter issue 3\nContent-Type: text/html")" [email protected] < /tmp/htmlmail.txt
ありがとう、男性
Fedora 17でテストして実行する
答え4
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が提案した方法よりも効率的です。