A mensagem atual também aparece como anexo, para que você possa salvá-la na lista de anexos. A partir do índice ou da própria mensagem, pressione v para abrir os anexos e s para salvar
Quando eu pressiono S
no mutt, ele salva o e-mail em um formato de pasta de e-mail ( cur/ tmp/ new/
), mas quero que um único arquivo seja salvo, assim como os anexos são salvos.
Isso é configurável?
O comando s
salva em uma caixa de correio, que para você está no formato maildir. Infelizmente, não há comando save-to-file, talvez porque no formato mbox histórico, uma caixa de correio que contém um único email seja apenas um arquivo contendo esse email.
A mensagem pipe% do comandomutt
(atalho padrão |
) pode ser usada para isso. Ele abre uma linha de comando e você escreve cat > DESIRED-FILE-PATH
.
A opção "pipe-decode" controla o que acontece com os cabeçalhos e partes mime quando você salva uma mensagem dessa maneira.
Provavelmente, pode-se escrever uma macro para essa funcionalidade.
Se você touch
um arquivo e, em seguida, tentar salvar ou copiar uma mensagem para ele, o mutt irá usá-lo como uma mbox.
Além disso, você pode querer usar a cópia em vez de salvar. Mutt assume que um e-mail deve existir apenas em uma cópia e salvar uma mensagem em outra caixa de correio a excluirá da primeira, enquanto a cópia fará uma cópia adequada.
Kai von Fintel 's answer funciona perfeitamente, mas eu pensei em compartilhar uma macro para agilizar esse processo.
Em primeiro lugar, em muttrc
:
macro index,pager S "| ~/.local/bin/file_email /tmp<enter>"
Isso canaliza o email completo (incluindo cabeçalhos e anexos) para o script a seguir. Crie um arquivo executável em ~/.local/bin/file_email
.
#!/usr/bin/env bash
# Save piped email to "$1/YYMMDD SUBJECT.eml"
# Don't overwrite existing file
set -o noclobber
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')
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"
Este script salva o arquivo no primeiro argumento (ou seja, no exemplo muttrc
acima, o email será salvo em /tmp
). O formato do nome do arquivo é YYMMDD SUBJECT.eml
. Ele também converte /
para ∕
para evitar a criação de subdiretórios.
Tags mutt