mutt
で、マクロは変数として使用するために、現在のメッセージからいくつかのプロパティを取得できますか? italicsで取得したいプロパティを持つ潜在的なマクロの例をいくつか示します。
decrypt-save
メッセージを含む現在のメールボックスに。| cat > /tmp/filename
、ここでファイル名はdate_subject
。archive-year
、ここでyearはメッセージの年によって異なります。 (メッセージの日付ではなく、現在の日付に基づいてこれを行うための way があります。)その他の回答 と同様に、一般的な意味でプロパティを取得する方法はまだわかっていませんが、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>"
N.B.これは、複数行の件名の最初の行のみを使用します。
メッセージからプロパティを取得する方法はわかりませんが、少なくとも最初の例では、別の解決策があります。
現在のメールボックスへのショートカットとして^
を使用できるため、現在のメールボックスにdecrypt-save
したい場合は、次の方法で可能です。
macro index <F7> <decrypt-save>^<Enter>y<Enter>