mailx を使用してメール本文にファイルの内容を送信すると問題が発生します。

mailx を使用してメール本文にファイルの内容を送信すると問題が発生します。

mailxコマンドを使用して電子メールを送信する必要があります。コマンドは次のようになることは明らかです。

echo "Body message" | mailx -s "Sending mail with Mailx" -r "[email protected]" "[email protected]"

これでファイルが存在し、そのファイルの内容を電子メール本文に送信する必要があります。

mailx -s "Sending mail with Mailx" -r "[email protected]" "[email protected]" < bodymail.txt

または

echo "$(cat bodymail.txt)" | mailx -s "Sending mail with Mailx" -r "[email protected]" "[email protected]"

どちらの場合も、私は常にファイルを添付ファイルとして残します。添付ファイルの代わりに電子メール本文にファイルの内容を配置する方法を知っていますか?本文メッセージは次のように変換されます。ATT00001.binファイル添付。メールbodymail.txtのファイルから特殊文字を削除しましたが、本文メッセージに内容を表示する方法が見つかりません

答え1

\n削除する必要があるのはキャラクターだけではありません。 128文字を超えるASCII文字(たとえばá、、、、、、éおよびíその他のアクセント記号付きの文字ñ)でもあります。削除するには:óú

tr -d '[\015\200-\377]' < input_file > output_file

ファイルをクリーンアップしたら、次のように送信できます。

mailx -s 'Error Log' [email protected] < output_file

今回はバイナリ添付ファイルの代わりにメッセージ本文に渡す必要があります。

答え2

次のコマンドを試してください。

cat bodymail.txt | mailx -s "Sending mail with Mailx" [email protected]

答え3

この問題が発生しました。マニュアルページから入手したソリューションのヒント:

Mailx では、入力テキストが改行 (^J, \n) で区切られた Unix 形式であると予想します。キャリッジリターン(^ M、\ r)も使用する非Unixテキストファイルは、バイナリデータとして扱われます。これらのファイルをテキストとして送信するには、たとえばtr -d '\ 015'を介してこれらの文字を削除します。

trで示す解決策は部分的な解決策にすぎません。ファイルに異なる制御文字がある場合、mailxはデータを本文として使用する代わりにバイナリとして処理して追加します。次のコマンドは、すべての特殊文字を削除し、ファイルの内容をメッセージ本文に入れます。

tr -cd "[:print:]\n" < SourceFile | mailx -s "Test Subject" [email protected]

trの説明はこちらをご覧ください。 trはすべての特殊文字を削除します

答え4

-q file
   Start the message with the contents of the specified file.  May be given in send mode only.

あなたの場合は次のとおりです。

mailx -q bodymail.txt -s "Sending mail with Mailx" -r "[email protected]" 

関連情報