30

Mailx で html メッセージを送信したい。次のコマンドを試すと

mailx -s "Subject"  user@gmail.com  < email.html 

email.html の内容をプレーンテキストで取得します。メッセージでは、ヘッダー Content-Type が text/plain に設定されています。-a オプションはファイルを送信しようとするため、ヘッダーを変更する方法がわかりませんでした。この回答はほとんど機能しました。Content-Type を text/html に適切に設定しますが、デフォルトの Content-Type である text/plain を置き換えません。

mailx -s "$(echo -e "This is the subject\nContent-Type: text/html")" user@gmail.com  < email.html

この結果が得られます:

From: send@gmail.com
To: user@gmail.com
Subject: This is the subject
Content-Type: text/html
Message-ID: <538d7b66.Xs0x9HsxnJKUFWuI%maikeul06@gmail.com>
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
 boundary="=_538d7b66.z5gaIQnlwb1f/AOkuuC+GwF1evCaG/XIHQMbMMxbY6satTjK"

This is a multi-part message in MIME format.

--=_538d7b66.z5gaIQnlwb1f/AOkuuC+GwF1evCaG/XIHQMbMMxbY6satTjK
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

<html>
<body>
<p>Helo wolrd</p>
</body>
</html>

PS : uuencode も試しました。Webメールでメッセージを表示しようとすると、空白のページが表示されます...

4

6 に答える 6

35

コマンドが(ヘッダーの追加) オプションmailxをサポートしている場合は簡単です。-a

$ mailx -a 'Content-Type: text/html' -s "my subject" user@gmail.com < email.html

そうでない場合は、次を使用してみてくださいsendmail

# create a header file
$ cat mailheader
To: user@gmail.com
Subject: my subject
Content-Type: text/html

# send
$ cat mailheader email.html | sendmail -t
于 2014-06-03T09:05:15.193 に答える
16

メールにはさまざまなバージョンがあります。メールを超える場合 -s subject to1@address1 to2@address2

  • Ubuntu の mailutils や Debian の bsd-mailx などのいくつかの mailx 実装では、そのためのオプションがあるため、簡単です。

    mailx -a 'Content-Type: text/html' -s "Subject" to@address <test.html
    
  • 家宝メイルクスでは、便利な方法はありません。任意のヘッダーを挿入する 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/mailx よりも予測可能なものをインストールしたほうがよいでしょう。たとえば、mutt。Mutt では、-H オプションを使用して入力のほとんどのヘッダーを指定できますが、mutt オプションで設定する必要がある Content-Type は指定できません。

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
于 2014-12-29T17:40:37.807 に答える
0

さて、Centos7 の「-a」メールと mailx は「ヘッダーの追加」ではなく「ファイルの添付」です。ここからの Centos7 でのソリューションへの最短パス: stackexchange.com

基本的:

yum install mutt
mutt -e 'set content_type=text/html' -s 'My subject' me@my.com < msg.html
于 2016-09-29T15:35:13.243 に答える
0
EMAILCC=" -c user1@dominio.cl,user2@dominio.cl"
TURNO_EMAIL="user@dominio.cl"

mailx $EMAILCC -s "$(echo "Status: Control Aplicactivo \nContent-Type: text/html")" $TURNO_EMAIL < tmp.tmp
于 2014-12-22T13:44:51.983 に答える
-3

AIX を使用している場合は、これを試してください。テキスト ファイルが添付され、HTML 本文が含まれます。これが機能しない場合は、/var/spool/mqueue で出力をキャッチします。

#!/usr/bin/kWh
if (( $# < 1 ))
 then
  echo "\n\tSyntax: $(basename) MAILTO SUBJECT BODY.html ATTACH.txt "
  echo "\tmailzatt"
  exit
fi
export MAILTO=${1-noreply@visweb.co.za}
MAILFROM=$(whoami)
SUBJECT=${2-"mailzatt"}
export BODY=${3-/apps/bin/attch.txt}
export ATTACH=${4-/apps/bin/attch.txt}
export HST=$(hostname)
#export BODY="/wrk/stocksum/report.html"
#export ATTACH="/wrk/stocksum/Report.txt"
#export MAILPART=`uuidgen` ## Generates Unique ID
#export MAILPART_BODY=`uuidgen` ## Generates Unique ID
export MAILPART="==".$(date +%d%S)."===" ## Generates Unique ID
export MAILPART_BODY="==".$(date +%d%Sbody)."===" ## Generates Unique ID
(
echo "To: $MAILTO"
 echo "From: mailmate@$HST "
 echo "Subject: $SUBJECT"
 echo "MIME-Version: 1.0"
 echo "Content-Type: multipart/mixed; boundary=\"$MAILPART\""
 echo ""
 echo "--$MAILPART"
 echo "Content-Type: multipart/alternative; boundary=\"$MAILPART_BODY\""
 echo ""
 echo ""
 echo "--$MAILPART_BODY"
 echo "Content-Type: text/html"
 echo "Content-Disposition: inline"
 cat $BODY
 echo ""
 echo "--$MAILPART_BODY--"
 echo ""
 echo "--$MAILPART"
 echo "Content-Type: text/plain"
 echo "Content-Disposition: attachment; filename=\"$(basename $ATTACH)\""
 echo ""
 cat $ATTACH
 echo ""
 echo "--${MAILPART}--"
  ) | /usr/sbin/sendmail -t
于 2015-05-13T11:12:42.790 に答える