Salvando e-mail como arquivo no mutt?

24

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?

    
por daisy 10.01.2013 / 02:55

4 respostas

16

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

    
por 10.01.2013 / 17:47
26

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.

    
por 10.01.2013 / 15:18
8

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.

    
por 30.10.2013 / 15:09
2

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.

    
por 20.09.2016 / 06:53

Tags