メール出力にContent-Type:text / htmlを使用するように「at」と「sendmail」を設定する方法

メール出力にContent-Type:text / htmlを使用するように「at」と「sendmail」を設定する方法

テキストの代わりにHTML出力を生成するためにいくつかのバッチプログラムをアップグレードしています。バッチプログラムはatコマンドを使用して実行され、sendmailコマンドを使用してすべての出力をユーザーに送信します。

atコマンドは電子メールのヘッダーを形成するため、バッチコマンドの出力がHTML形式であることを「at」コマンドまたは「sendmail」に表示する方法が混乱しました。 「at」と「sendmail」の組み合わせはヘッダーを生成し、ヘッダーを改行で終了するため、ヘッダー情報(Content-Typeなど)の埋め込みは本文の一部と見なされます。

私の期待は、最新のクライアントがメッセージを読み取ると、コンテンツタイプが "text / html"に正しく設定されることです。

コマンドラインオプション、環境変数、bash/perl/awk/scripts、新しいバッチランチャーの提案など、すべてのソリューションに満足しています。

答え1

at単に出力を印刷してメッセージの送信に頼るのではなく、スクリプトからメッセージを明示的に送信します。 HTMLをファイルに書き込み、それを使用して追加してmuttメッセージを送信します。

または、ヘッダー、MIME構造などを使用してメッセージを作成してパイプするのがより簡単な方法ですsendmail -t -imutt

答え2

私はあなたが探しているものを基本的に行うことは不可能だと思います。私はat仕事で結果メッセージヘッダーを実際に変更する実装を知りません。

ただし、HTML出力を生成するサブプロセスとしてスクリプトを実行し、その出力をファイルにリダイレクトし、必要に応じて周囲のヘッダーを追加してから、結果テキストBlob全体sendmail -bm 現状のままsendmail送信者と受信者のフィールドの検索に依存します)。

非常に人工的な例のように:

>tempfile
echo 'From: nobody@localhost' >>tempfile
echo 'To: root@localhost' >>tempfile
echo 'Subject: list of files' >>tempfile
echo >>tempfile
ls -lh $HOME >>tempfile
echo 'Add more data here' >>tempfile
sendmail -bm <tempfile && rm -f tempfile

あなたが望むものを大まかにすることができます。 (もちろん、出力がHTMLであることを示すすべてを含めるように上記の内容を調整する必要があります。)

答え3

「at」ソースコードを読むと、これはatコマンドで生成されたメールヘッダーにコンテンツタイプフィールドを含めるように変更する非常に簡単なパッチです。

完全な答えは、atコマンドが2つの許容値(デフォルトは「plain」、デフォルトは「html」)を確認して検証する環境変数(AT_CONTENT_TYPEなど)またはコマンドライン引数(-cなど)を追加することです。かもしれません。利用できる選択肢)。

もちろん、これにより実装はPOSIXと互換性がなくなります。atのPOSIX仕様したがって、GNU General Public Licenseに準拠したコマンドをコピーして名前を変更すると、利点が得られます。

関連情報