Zapisujesz e-mail jako plik w Mutt?

28

Kiedy naciskam Sw mutt, zapisuje pocztę w formacie folderu poczty ( cur/ tmp/ new/), ale chcę zapisać pojedynczy plik, podobnie jak sposób zapisywania załączników.

Czy to można skonfigurować?

stokrotka
źródło

Odpowiedzi:

23

Rzeczywista wiadomość pojawia się również jako załącznik, więc możesz zapisać ją z listy załączników. W indeksie lub w samej wiadomości naciśnij, vaby otworzyć załączniki i szapisać

Michał Mrożek
źródło
Tylko uwaga: jeśli wiadomość e-mail zawiera załączniki, zapisanie tylko pierwszego wpisu z listy załączników spowoduje zapisanie wiadomości - ale bez załączonych załączników.
sdaau
3
Kolejna uwaga: nie oszczędza to żadnych nagłówków, w tym nadawcy, odbiorcy i tematu.
Sparhawk,
31

sPolecenie zapisuje do skrzynki pocztowej, co dla ciebie jest w formacie Maildir. Niestety, nie ma polecenia zapisu do pliku, być może dlatego, że w historycznym formacie mbox skrzynka pocztowa zawierająca pojedynczą pocztę jest tylko plikiem zawierającym tę pocztę.

muttPolecenie rury komunikatów (domyślny skrót |) mogą być użyte do tego celu. Otwiera wiersz poleceń i piszesz cat > DESIRED-FILE-PATH.

Opcja „dekodowania potoku” kontroluje, co dzieje się z nagłówkami i częściami mime, gdy zapisujesz wiadomość w ten sposób.

Prawdopodobnie można by napisać makro dla tej funkcji.

Kai von Fintel
źródło
Fajnie, to może również uratować nagłówki, ale na razie użyłbym sposobu Michaela, dzięki!
stokrotka
1
Działa to dobrze i zapewnia efektywny sposób zapisywania ponad 50 wiadomości e-mail (przy użyciu tagowania dopasowanego do wzorca) do pliku. Musiałem trochę kopać, aby odkryć, że dodając set pipe_decode=yesdo mojego muttrc było to, o czym pisał Kai von Fintel.
Screenack
powoduje to również zapisanie załączników w eksportowanym pliku e-mail.
sdaau
to jest w porządku, ale widzę przy tym nieprzetworzone łamanie linii =.
Jack Wasey
Niesamowite. To zadziałało dla mnie świetnie. Chciałem tylko wyodrębnić ponad 20 e-maili z przestarzałego Maildir. Twoje zdrowie!
prageeth
10

Jeśli masz touchplik, a następnie spróbuj zapisać lub skopiować do niego wiadomość, mutt użyje go jako mbox.

Możesz także użyć funkcji kopiowania zamiast zapisu. Mutt zakłada, że ​​poczta powinna istnieć tylko w jednej kopii, a zapisanie wiadomości w innej skrzynce spowoduje usunięcie jej z pierwszej, a kopiowanie wykona właściwą kopię.

Kyrias
źródło
1
Musiałem pobrać wiadomość z pełnymi nagłówkami, aby wkleić ją do skryptu testu filtra, i to działało idealnie.
Soren Bjornstad,
2

Kai von Fintel „s odpowiedź działa idealnie, ale po prostu pomyślałem, że podzielę makro do usprawnienia tego procesu.

Po pierwsze muttrc:

macro index,pager S "| ~/.local/bin/file_email /tmp<enter>"

Spowoduje to przesłanie pełnego e-maila (w tym nagłówków i załączników) do następującego skryptu. Utwórz plik wykonywalny pod adresem ~/.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"

Ten skrypt zapisuje plik w pierwszym argumencie (tzn. W muttrcpowyższym przykładzie wiadomość e-mail zostanie zapisana /tmp). Format nazwy pliku to YYMMDD SUBJECT.eml. Konwertuje również /na, aby zapobiec tworzeniu podkatalogów.

Krogulec
źródło
Czy użycie formailskryptu nie byłoby łatwiejsze ?
0andriy
@ 0andriy Nie jestem zaznajomiony formail, więc przeczytałem. Nie jestem jednak do końca pewien, do której części mojego skryptu się odnosiłeś? Używasz formaildo wyodrębnienia tematu i daty? Jeśli tak, prawdopodobnie fajny pomysł. Zachęcałbym cię do napisania odpowiedzi; Zdecydowanie poparłbym to.
Sparhawk
0

Wypróbowałem wszystkie sugerowane odpowiedzi, ale nie mogłem zapisać nieprzetworzonego, wieloczęściowego (tekst / zwykły + tekst / HTML) e-maila do zapisania do pliku, w tym jego nagłówków i wszystkiego. Potrzebowałem tego, aby nakarmić mój filtr antyspamowy wiadomością e-mail, aby nauczyć go, że określona poczta to spam, czy nie ...

Rozwiązaniem, które wymyśliłem, jest naciśnięcie e(tj. „Edytuj wiadomość”) na otwartej wiadomości, która otwiera nieprzetworzoną wiadomość w wybranym edytorze. Raw tutaj oznacza, że ​​otrzymujesz wiadomość dokładnie tak, jak przyszła w mutt, więc masz wszystkie nagłówki i wszystkie bajty, które składają się na wiadomość.

Po uderzeniu episzę bufor (ustawiam edytor na vim ) do pliku za pomocą :w <path_to_file>/<file_name>i to wszystko.

PS: Dodałbym to jako komentarz, ale aby to zrobić, musisz mieć pewien poziom reputacji. Wiem też, że pytanie jest bardzo stare, ale ponieważ wielu ludzi nadal używa neomutt , pomyślałem, że to może komuś pomóc.

Aktualizacja: Przeoczyłem pipe-decodeopcję, o której mówił Kai. Gdyby prawidłowo ustawić tę opcję, działałoby to |również. Nadal działa też moje rozwiązanie ;-)

m4110c
źródło