MAILXは、タイトルと本文が空白のEメールを送信します。

MAILXは、タイトルと本文が空白のEメールを送信します。

次のコマンドは、件名と本文が空のメールの送信を開始します。

mailx -s "Daily Extract" $RESULT_EMAIL < $LOG

$RESULT_EMAIL- 確認された配布リストが含まれています。

$LOG- 確認された電子メールの内容が含まれています。

今、あなたの電子メールがタイトル行なしで空である理由を知っていますか?

これは、通常のパッチが適用されたPRODサーバーにあります。おそらくJavaのバージョンですか? Red Hatサーバーのバージョン? mailxはXXXバージョンでは動作しませんか?

$LOG- 電子メールのテキストが含まれています。良い...This is the body of the Email. The email verifies that you have subscribed to us...

新しいメッセージはサーバーのコマンドラインを使用し、mailx機能は電子メールを送信します。

シェルスクリプトはAtomic Sc​​heduler(UC4)で実行されます。したがって、UC4は午前6時にシェルスクリプトを実行する予定です。 mailx コマンドはこのシェルスクリプト内にあります。

私はあなたが要求した情報を得るために努力します。

cat /etc/os-release

[ CATコマンドの結果はここで確認できます。]

lsb_release -a
Command not found

ベストアンサー1

コマンドの後に文字列を実行すると、<シェルはその文字列をファイル名として使用し、そのファイルの内容はコマンドの標準入力ストリームにリダイレクトされます。

つまり、実行時に

mailx -s 'Daily Extract' "$RESULT_EMAIL" <"$LOG"

...その後、変数内のすべてがLOG次のように使用されます。ファイル名。ファイルが存在しない場合は、メッセージ本文なしでメッセージが送信されます(コマンドを手動で実行する場合は、端末に「該当するファイルまたはディレクトリなし」エラーメッセージも表示する必要があります)。

しかし、その中に含まれる内容は、送信しようとするLOGメッセージのテキストのようです。この場合、これらのリダイレクトは使用できず、変数の値が$LOG標準入力ストリームに渡されるようにする必要がありますmailx

私たちはこれを次のように使用できますprintf

printf '%s\n' "$LOG" | mailx -s 'Daily Extract' "$RESULT_EMAIL"

または、次の文字列を使用します(一部のシェルでサポートされています)。

mailx -s 'Daily Extract' "$RESULT_EMAIL" <<<"$LOG"

または、ここで説明されているリダイレクトを使用してください。

mailx -s 'Daily Extract' "$RESULT_EMAIL" <<END_MESSAGE
$LOG
END_MESSAGE

おすすめ記事