mutt 宏可以从当前消息中获取属性吗?

mutt 宏可以从当前消息中获取属性吗?

在 中mutt,宏可以从当前消息中获取一些属性,以便将它们用作变量吗?以下是一些潜在宏的示例,其中包含我希望获得的属性斜体

  • 删除 gpg 加密对于当前消息。即decrypt-save当前邮箱包含消息。
  • 保存当前消息到一个以主题和日期作为名称的文件。即| cat > /tmp/filename,其中文件名是date_subject
  • 将消息归档到邮箱archive-year,其中取决于消息的年份。 (有一个方式根据当前日期而不是消息的日期来执行此操作。)

答案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>

相关内容