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