Linux でファイルを物理的に作成せずにコマンドラインを使用して電子メールの添付ファイルを送信する方法

Linux でファイルを物理的に作成せずにコマンドラインを使用して電子メールの添付ファイルを送信する方法

CSV 添付ファイル付きのメールを送信しようとしていますが、ファイルをローカルで作成することはできません。

コンテンツをパイプして(メモリ内の変数にコンテンツがあります)、データが添付ファイルとして表示されるようにメール/メールを送信する方法はありますか?

答え1

mailxを使うことができます(例はhttps://access.redhat.com/solutions/104833) および bash<()構文:

echo "MESSAGE BODY" | mailx -s "SUBJECT" -a <(echo something | sed 's/thing/thong/g') [email protected]

mutt での同じ例:

echo "MESSAGE BODY" | mutt -s "SUBJECT" -a <(echo something | sed 's/thing/thong/g') -- [email protected]

内のすべてのものは<()bash によって実行され、そのための一時ファイルが作成され、コマンドのパラメータとして提供されます。

答え2

質問には、ファイルを作成しない理由が述べられていません。その理由によっては、質問した方法がうまくいかなかった場合に、根本的な問題を別の方法で解決できる代替ソリューションがあるかもしれません。

  • ファイルに永続的なストレージに残したくない機密データが含まれていることが懸念される場合は、ファイルを RAM ディスクに書き込むことができます。メール プログラムがファイルを tmp ディレクトリまたは下書きフォルダにコピーしないように注意してください。

  • ファイルが大きすぎて永続ストレージに収まらないことが懸念される場合は、受信者もファイルや中間 MTA を開くのに苦労する可能性が高いことを考慮する必要があります。メール プロトコルではなく、別のプロトコルを検討する必要があるかもしれません。

関連情報