As macros de mutação podem obter propriedades da mensagem atual?

2

Em mutt , as macros podem obter algumas das propriedades da mensagem atual, para usá-las como variáveis? Aqui estão alguns exemplos de macros em potencial, com as propriedades que eu gostaria de obter em itálico .

  • Remover criptografia gpg da mensagem atual. ou seja, decrypt-save para a caixa de correio atual contendo a mensagem.
  • Salve a mensagem atual em um arquivo com o assunto e a data como seu nome. ou seja, | cat > /tmp/filename , onde nome do arquivo é date_subject .
  • Arquive a mensagem na caixa de correio archive-year , onde ano depende do ano da mensagem. (Existe uma forma de fazer isso com base na data atual, mas não na data da mensagem.)
por Sparhawk 11.10.2015 / 07:25

2 respostas

1

Eu não sei como obter propriedades da mensagem, mas pelo menos para o seu primeiro exemplo, há outra solução.

Você pode usar ^ como um atalho para a caixa de correio atual, portanto, se você quiser decrypt-save para a caixa de correio atual, é possível com

macro index <F7> <decrypt-save>^<Enter>y<Enter>
    
por 12.10.2015 / 18:02
1

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.

    
por 13.10.2015 / 15:02

Tags