muttマクロは現在のメッセージから属性を取得できますか?

muttマクロは現在のメッセージから属性を取得できますか?

マクロはmutt現在のメッセージからいくつかの属性を取得し、変数として使用できますか?以下は、私が取得したい属性を持つ潜在的なマクロのいくつかの例です。イタリック体

  • GPG暗号化の削除最新ニュースのため。すぐにdecrypt-save到着現在のメールメッセージが含まれています。
  • 現在のメッセージを保存タイトルと日付が書かれたファイル。つまり| cat > /tmp/filename、ファイル名はdate_subject
  • メッセージをメールボックスに保管してくださいarchive-year年度メッセージの年によって異なります。 (あります方法メッセージの日付ではなく、現在の日付に基づいてこれを行います。 )

答え1

似ているその他の回答一般的な意味で属性を取得する方法を理解していませんが、これは2番目の例のハッキーソリューションです。

標準入力を介して電子メールを受け入れ、日付と件名を抽出します/path/to/save/email/date_subject

#!/bin/env bash

message=$(cat)

mail_date=$(<<<"$message" grep -oPm 1 '^Date: ?\K.*')
formatted_date=$(date -d"$mail_date" +%y%m%d)
# Get the first line of the subject, and change / to ∕ so it's not a subdirectory
subject=$(<<<"$message" grep -oPm 1 '^Subject: ?\K.*' | sed 's,/,∕,g')    
# decode base64 (UTF-8)
if [[ "$subject" =~ ^=\?[Uu][Tt][Ff]-8\?B\?.*?= ]]; then
  nofront="$(echo "${subject#=\????-8\?B\?}")"
  todecode="$(echo "${nofront%\?=}")"
  subject="$(<<<"$todecode" base64 --decode)"
fi

if [[ $formatted_date == '' ]]; then
  echo Error: no date parsed
  exit 1
elif [[ $subject == '' ]]; then
  echo Warning: no subject found
fi

echo "${message}" > "$1/${formatted_date}_${subject}.eml" && echo Email saved to "$1/${formatted_date}_${subject}.eml"

で次の関数muttrcにバインドします。S

macro index,pager S "| /path/to/script /path/to/save/email<enter>"

複数行のタイトルの最初の行のみが使用されます。

答え2

メッセージから属性を取得する方法がわかりませんが、少なくとも最初の例では別の解決策があります。

現在のメールボックスへのショートカットとして使用できるため、現在のメールボックスにアクセスするには、^次のものを使用できます。decrypt-save

macro index <F7> <decrypt-save>^<Enter>y<Enter>

関連情報