答案1
类似于其他答案,我还没有弄清楚如何获取一般意义上的属性,但这是第二个示例的一个 hacky 解决方案。
编写一个脚本,通过标准输入接受电子邮件,提取日期和主题,并将其保存到/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>