web-dev-qa-db-ja.com

postfix 2.6.6およびcentOS 6.4を含むmailxを使用してHTMLを送信する

CentOSサーバーからユーザーにHTMLメールを送信しようとしています。長期的には、ユーザーにレポートを送信するコマンドを実行するCOBOLプログラムを構築します。

ここにいくつかの詳細があります。

  • CentOS 6.4
  • MAU:Mailx
  • MTA:Postfix 2.6.6
  • PostfixはExchangeサーバーを介してリレーを実行しています。

実行しようとしたコマンドについては。私が今日最も多く見たのは以下のものです。

$ mailx -a 'Content-Type: text/html' -s "Command Line Test" [email protected] < ./bodytext.html

表示されたコマンドを実行すると、「Content-Type:text/html:No such file or directory」というエラーが表示されます。特定の更新後、Content-Typeの指定のフラグとして-aを許可しなくなったと確信しています。

最初の行として、実際のbodytext.htmlファイルに 'Content-Type:text/html'を追加してみました。 HTMLメールを送信するために何ができるか途方に暮れています。私が見つけたソースのいくつかは、mailxとpostfixがHTMLメールを正しく送信できないと言っています。うまくいかない場合がありますが、そうでない場合は、他のMAUおよびMTAテクノロジに対するあなたの考えを知りたいですか?

3
AndyV

生成されたテキストファイルを完全に制御しているように見えるので、/usr/sbin/sendmailを直接使用するのが最も簡単でおそらく最も移植性の高い方法です。

/usr/sbin/sendmail -t < complete-mail.txt

これには、すべての重要なヘッダーを自分で追加する必要があります(FromToSubject、およびContent-Type)。ファイルは次のようになります。

From: Company <[email protected]>
To: Customer <[email protected]>
Subject: You are awesome
Content-Type: text/html

<html>…</html>

PostfixはDateのような欠落しているが必要なヘッダーを追加します。

0
tarleb

mailx のマニュアルも読みましたか、特に-aオプション?

-a file指定されたファイルをメッセージに添付します。

CentOSがこのバージョンのmailxを使用しているため、 Gillesの回答 から:

家宝 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"

Postfixは確かにHTMLメールを送信できます。

1
Jakuje