私はMuttをメールクライアントとして使用し、Vimをエディターとして構成しています。時々、私は空のメッセージ本文を含む電子メールを(通常は自分自身に)送信したいと思います。たとえば、メッセージにはSubject行と添付ファイルがあります。
このようなメールを作成するときは、件名と受信者アドレスを入力すると、Vimが開いてメッセージ本文を編集できるようになります。一時ファイルを保存して閉じる前に、空白を入力する必要があります。テキストを入力せずに(:q
または:x
コマンドを使用して)Vimを終了すると、次のエラーメッセージが表示され、メールボックスフォルダーのインデックスに戻ります。
変更されていないメッセージを中止しました。
コマンドラインを使用して次のようなメッセージを送信できることを認識しています。
echo | mutt -s "Subject Line" -a attachment.Zip [email protected]
ただし、Muttをインタラクティブに使用しながらこれを実行できるようにしたいと思います。空のメッセージ本文を許可するように設定できる構成変数はありますか?
Mutt Webサイトのドキュメントを調べ、DuckDuckGoとGoogleの両方を使用して「Abortedunmodified message」というフレーズを検索しましたが、すべての結果は、editor
変数が正しく設定されていないユーザーに関連しているようです。
この行を.muttrc
ファイルに追加するだけです
set abort_unmodified = no
man muttrc
および オンラインマニュアル に記載されています:
yesに設定すると、ファイルに変更が加えられていない場合、メッセージ本文の編集後にコンポジションが自動的に中止されます(このチェックは最初ファイルの編集)。 noに設定すると、合成が中止されることはありません。
Muttは、Vimを起動する前に一時メッセージ本文ファイルの変更時刻を記録し、Vimの終了後に再度確認します。変更時刻が変更されていない場合、Muttは電子メールメッセージを送信せず、Aborted unmodified message
を発行します。
これを回避する簡単な方法は、Vimを閉じる前に:w
で空のバッファーを書き込むことです。
ここでは、$editor
を有利に使用できます。
まず、これが空の電子メールであることを示す、特に何かを探す小さなスクリプトを作成します。たとえば、Subjectフィールド値の最初の文字として特殊文字を入力できます。
スクリプトがそのインジケーターを検出しない場合は、通常のエディターを正常に起動する必要があります。
doesそのインジケーターを検出した場合は、メッセージファイル($editor
呼び出しの最初のパラメーターとして指定)をtouch
して返す必要があります。また、そのインジケーターが削除されるように作成して、編集のためにe
を押すと、通常のエディターを取得することもできます。
これは、少しのformail
と選択したテキストプロセッサ(awk、sed、...)と組み合わせることができます。
Muttの$editor
を設定して、vim
の代わりにそのスクリプトを呼び出します。