Wyodrębnij / zapisz załącznik mailowy za pomocą bash

30

Używanie zwykłych bashnarzędzi (tj. Wbudowanych lub powszechnie dostępnych narzędzi wiersza poleceń)

  • możliwe i
  • w jaki sposób

wyodrębnić / zapisać załączniki w wiadomościach e-mail?

Powiedzmy na przykład, że mam raport nocny, który przychodzi pocztą elektroniczną, ale jest archiwum zip kilku plików dziennika. Chcę zapisać wszystkie te zamki w katalogu kopii zapasowej. Jak mam to osiągnąć?

królikarnia
źródło
„normalne narzędzia bash” - czy masz na myśli używanie tylko funkcji wbudowanych w bash (tj. tego, co znajdziesz na stronie podręcznika bash), czy ogólnie mówiąc, masz na myśli narzędzia wiersza poleceń, które możesz dodać do skryptu powłoki bash ?
Doug Harris,
@Doug Harris - albo .. jeśli mogę zadzwonić maili zrobić to, albo zapisać załącznik inaczej, to też jest w porządku :)
warren

Odpowiedzi:

29

Jeśli zależy Ci na przenośności, strzeż się, że istnieje kilka różnych wersji mail(1)i mailx(1). Istnieje mailxpolecenie POSIX , ale z bardzo niewielkimi wymaganiami. Zresztą żadna z implementacji, które wydaje mi się nie analizować załączników.

Możesz mieć pakiet mpack . Jego munpackpolecenie zapisuje wszystkie części wiadomości MIME w osobnych plikach, a następnie wystarczy zapisać ciekawe części i posprzątać resztę.

Jest też metamail . Odpowiednikiem munpackjest metamail -wy.

Gilles „SO- przestań być zły”
źródło
Ponadto, aby dodać, że jeśli chcesz również wyodrębnić fragmenty MIME wiadomości e-mail podczas korzystania, munpackużyj opcji „-t”:munpack -t email_file
Pierz
Dzięki za informację o metamail. Czy możesz mi pomóc z tym pytaniem ?
George
13

Najlepszym programem do tego celu jest ripMIME.

Wyodrębnia tekst i wszystkie załączniki:

https://pldaniels.com/ripmime/

GitHub: inflex / ripMIME

Andreas Rehm
źródło
4
sudo apt install ripmime działa jednak. Zobacz także linux.die.net/man/1/ripmime . Używam tego programu; działa świetnie, brak zależności oprócz libc6.
młot
dobre rzeczy, metamail i munpack nie są dostępne na Ubuntu, ale ripmime jest i robi dokładnie to, czego oczekiwano.
Diego
2
  • TAK możliwe

  • To jest JAK (Zasób stąd )

znajdź katalog zawierający pliki | podczas odczytu pliku; robić

utwórz tempdir i skopiuj tam plik

uruchom munpack na plikach i skopiuj załączniki w innym miejscu

zniszcz tempdir (zawartość)

gotowy

subanki
źródło
Jeśli ktoś chce, żebym
wkleił
1
jeśli byłbyś tak miły (oczywiście pozostawiając przypisywanie miejsca, w którym go znalazłeś :))
warren
1
po prostu przeczytaj skrypt ... to hec! Dużo perla!
warren
więc jesteś pewien, że chcesz, żebym włączyła to do mojej odpowiedzi, będzie ona bardzo długa.
subanki
nie wklejaj tutaj, kopiowanie z oryginalnego źródła byłoby lepsze w tym przypadku :)
warren