Salvando email como arquivo em mutt?

28

Quando pressiono Smutt, ele salva o correio em um formato de pasta de correio ( cur/ tmp/ new/), mas quero que um único arquivo seja salvo, assim como os anexos são salvos.

Isso é configurável?

margarida
fonte

Respostas:

23

A mensagem real também aparece como anexo, para que você possa salvá-la da lista de anexos. No índice ou na própria mensagem, pressione vpara abrir os anexos e ssalvar

Michael Mrozek
fonte
Apenas uma observação: se sua mensagem de e-mail contiver anexos, salvar apenas a primeira entrada da lista de anexos salvará a mensagem - mas sem os anexos incluídos.
Sdaau 19/05
3
Outra observação: isso não salva cabeçalhos, incluindo remetente, destinatário e assunto.
Sparhawk #
31

O scomando salva em uma caixa de correio, que para você está no formato maildir. Infelizmente, não há comando para salvar em arquivo, talvez porque no formato histórico da mbox, uma caixa de correio que contenha um único e-mail seja apenas um arquivo que contenha esse e-mail.

O muttcomando pipe-message (atalho padrão |) pode ser usado para isso. Abre uma linha de comando e você escreve cat > DESIRED-FILE-PATH.

A opção "decodificação de canal" controla o que acontece com os cabeçalhos e as partes mime quando você salva uma mensagem dessa maneira.

Provavelmente, poderia-se escrever uma macro para essa funcionalidade.

Kai von Fintel
fonte
Legal, isso pode salvar os cabeçalhos também, mas, por enquanto, eu usaria o jeito de Michael, obrigado!
daisy
1
Isso funciona bem e fornece uma maneira eficiente de salvar mais de 50 e-mails (usando a marcação de correspondência de padrões) em arquivo. Eu tive que cavar um pouco para descobrir que, adicionando set pipe_decode=yesao meu muttrc, era sobre o que Kai von Fintel estava escrevendo.
Screenack
Além disso, isso salva os anexos no arquivo de email exportado também.
Sdaau 19/05
isso é bom, mas vejo quebras de linha não processadas ao =fazer isso.
Jack Wasey
Impressionante. Isso funcionou muito bem para mim. Eu só queria extrair mais de 20 e-mails de um Maildir obsoleto. Felicidades!
prageeth
10

Se você tiver touchum arquivo e tentar salvar ou copiar uma mensagem para ele, o mutt o usará como uma mbox.

Além disso, você pode querer usar copiar em vez de salvar. Mutt assume que um email 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.

kyrias
fonte
11
Eu precisava receber a mensagem com os cabeçalhos completos para colá-la em um script de teste de filtro, e isso funcionou perfeitamente.
Soren Bjornstad 15/08/16
2

A resposta de Kai von Fintel funciona perfeitamente, mas eu pensei em compartilhar uma macro para otimizar 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 muttrcexemplo acima, o email será salvo em /tmp). O formato do nome do arquivo é YYMMDD SUBJECT.eml. Também é convertido /em para impedir a criação de subdiretórios.

Sparhawk
fonte
Não seria mais fácil usar formailo script?
0andriy 11/01
@ 0andriy Eu não estou familiarizado formail, então eu tive uma leitura. No entanto, não tenho certeza de qual parte do meu script você estava se referindo? Usando formailpara extrair assunto e data? Se assim for, provavelmente uma boa ideia. Exorto você a escrever uma resposta; Eu definitivamente votaria.
Sparhawk 14/01
0

Eu tentei todas as respostas sugeridas, mas não foi possível salvar o e-mail bruto, com várias partes (texto / sem formatação + texto / html) em um arquivo, incluindo os cabeçalhos e tudo mais. Eu precisava disso para alimentar meu filtro de spam com o email para ensiná-lo, que um email específico é spam ou não ...

A solução que encontrei foi pressionar e(ou seja, "editar mensagem") na mensagem aberta, que abre a mensagem bruta no seu editor de escolha. Raw aqui significa que você recebe a mensagem exatamente como chegou em mutt, para ter todos os cabeçalhos e todos os bytes que compõem a mensagem.

Depois de bater e, apenas escrevo o buffer (defino o editor como vim ) em um arquivo :w <path_to_file>/<file_name>e é isso.

PS: Eu adicionaria isso como comentário, mas você precisa de um certo nível de reputação para fazer isso. Além disso, eu sei que a pergunta é muito antiga, mas como o neomutt ainda é usado por muitas pessoas, achei que isso poderia ajudar alguém.

Atualização: eu ignorei a pipe-decodeopção que Kai estava falando. Com essa opção definida corretamente |, também funcionaria. Ainda minha solução está funcionando também ;-)

m4110c
fonte