mail -s "subject" [email protected] <test.html
は機能しますが、プレーンテキストの電子メールでのみ機能します。
Linuxコマンドmail
を使用してHTMLメールを送信する正しい方法は何ですか ?
承認された回答:
mail
にはさまざまなバージョンがあります その周り。 mail -s subject [email protected] [email protected] <body
を超える場合 (送信の場合、これがすべてPOSIXの保証であり、-s
昔は存在しませんでした)、コマンドラインオプションが異なる傾向があります。ヘッダーを追加するのは必ずしも簡単ではありません。
-
いくつかの
mailx
実装、例えばmailutils
から UbuntuまたはDebianのbsd-mailx
、そのためのオプションがあるので、それは簡単です。mailx -a 'Content-Type: text/html' -s "Subject" [email protected] <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" [email protected] <<EOF ~e . EOF rm -f "$temp_script"
-
一般的なPOSIX
mailx
を使用 、ヘッダーを取得する方法がわかりません。
mail
を使用する場合 またはmailx
、覚えておいてください
- これは、特定のLinuxディストリビューション内でも移植性がありません。たとえば、UbuntuとDebianの両方に、
mail
の代替手段がいくつかあります。 およびmailx
。 - メッセージを作成するときは、
mail
およびmailx
~
で始まる行を処理します コマンドとして。テキストをmail
にパイプする場合 、このテキストに~
で始まる行が含まれないように調整する必要があります 。
とにかくソフトウェアをインストールする場合は、mail
よりも予測可能なものをインストールすることをお勧めします。 /mail
/ mailx
。たとえば、mutt。 Muttを使用すると、-H
を使用して入力のほとんどのヘッダーを指定できます。 オプションですが、Content-Type
ではありません 、muttオプションで設定する必要があります。
mutt -e 'set content_type=text/html' -s 'hello' '[email protected]' <test.html
または、 sendmail
を呼び出すこともできます 直接。 sendmail
にはいくつかのバージョンがあります そこにありますが、それらはすべてsendmail -t
をサポートしています メールから受信者のリストを読んで、最も簡単な方法でメールを送信します。 (すべてがBcc:
をサポートしているわけではないと思います 。)ほとんどのシステムでは、sendmail
通常の$PATH
にはありません 、/usr/sbin
にあります または/usr/lib
。
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: [email protected]
Subject: hello
Content-Type: text/html
EOF