Могут ли mutt-макросы получать свойства из текущего сообщения?

В mutt макросы могут получать некоторые свойства из текущего сообщения, чтобы использовать их в качестве переменных? Вот несколько примеров потенциальных макросов, которые я хотел бы получить курсивом .

  • Удалите gpg-шифрование для текущего сообщения. т.е. decrypt-save для текущего почтового ящика, содержащего сообщение.
  • Сохраните текущее сообщение в файл с темой и датой в качестве ее имени. т.е. | cat > /tmp/filename | cat > /tmp/filename , где filename – date_subject .
  • Файл сообщения в archive-year , archive-year , год которого зависит от года сообщения. (Существует способ сделать это на основе текущей даты, но не даты сообщения.)

Я не знаю, как получить свойства из сообщения, но, по крайней мере, для вашего первого примера, есть другое решение.

Вы можете использовать ^ как ярлык для текущего почтового ящика, поэтому, если вы хотите decrypt-save в текущий почтовый ящик, это возможно с помощью

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

Как и в другом ответе , я еще не разработал, как получить свойства в общем смысле, но вот хакерское решение для второго примера.

Напишите сценарий, который принимает электронную почту через стандартный ввод, извлекает дату и тему и сохраняет ее в /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>" 

NB это будет использовать только первую строку многострочных объектов.