
CentOS サーバーからユーザーに HTML メールを送信しようとしています。 最終的には、ユーザーにレポートを送信するコマンドを実行する COBOL プログラムを構築する予定です。
ここにいくつかの詳細があります。
- 6.4 の
- MAU : メールx
- 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: そのようなファイルまたはディレクトリはありません」というエラーが表示されます。特定の更新以降、Content-Type 指定のフラグとして -a が許可されなくなったことは間違いありません。
また、実際の bodytext.html ファイルの一番最初の行に 'Content-Type: text/html' を追加してみました。HTML メールを送信するにはどうすればいいのか、まったくわかりません。私が見つけた情報源の中には、mailx と postfix では HTML メールを正しく送信できないというものがあります。そうでないことを願いますが、もしそうなら、他の MAU や MTA テクノロジについてどう思われるか教えてください。
答え1
生成されたテキスト ファイルを完全に制御できるようなので、最も簡単でおそらく最も移植性の高い方法は、/usr/sbin/sendmail
直接関与することです。
/usr/sbin/sendmail -t < complete-mail.txt
これには、すべての重要なヘッダー ( From
、、、および)を自分で追加する必要があります。ファイルは次のようになります。To
Subject
Content-Type
From: Company <[email protected]>
To: Customer <[email protected]>
Subject: You are awesome
Content-Type: text/html
<html>…</html>
Postfix は、 のような不足しているが必要なヘッダーを追加しますDate
。
答え2
マニュアルを読んだことがありますか?mailx
特に-a
オプションは?
-a file
指定されたファイルをメッセージに添付します。
からジルの答えCentOS では次のバージョンの を使用しているためですmailx
:
家宝とともにメールx便利な方法はありません。任意のヘッダーを挿入する 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 メールを送信できます。