Semelhante à outra outra resposta , ainda não descobri como obter propriedades em um sentido geral , mas aqui está uma solução hacky para o segundo exemplo.
Escreva um script que aceite um email por meio de entrada padrão, extraia a data e o assunto e salve-o em /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"
Em muttrc
, ligue S a esta função:
macro index,pager S "| /path/to/script /path/to/save/email<enter>"
N.B. isso só usará a primeira linha de assuntos com várias linhas.