Извлечь / сохранить почтовое вложение, используя bash

30

Использование обычных bashинструментов (т. Е. Встроенных или общедоступных инструментов командной строки)

  • возможно, и
  • как

извлечь / сохранить вложения в письмах?

Например, скажем, у меня есть ночной отчет, который приходит по электронной почте, но представляет собой zip-архив нескольких файлов журнала. Я хочу сохранить все эти почтовые индексы в резервную папку. Как мне это сделать?

кроличий садок
источник
«обычные инструменты bash» - вы имеете в виду использование только функций, встроенных в bash (то есть то, что вы найдете на справочной странице bash), или вы имеете в виду, в более общем смысле, инструменты командной строки, которые можно добавить в сценарий оболочки bash ?
Даг Харрис
@ Даг Харрис - либо ... если я могу позвонить mailи сделать это, либо сохранить вложение в противном случае, это тоже нормально :)
Уоррен

Ответы:

29

Если вы стремитесь к переносимости, помните, что существует несколько разных версий mail(1)и mailx(1). Есть mailxкоманда POSIX , но с очень небольшими требованиями. И ни одна из реализаций, которые у меня есть, похоже, в любом случае не анализирует вложения.

Вы можете иметь пакет mpack . Его munpackкоманда сохраняет все части сообщения MIME в отдельные файлы, после чего все, что вам нужно сделать, это сохранить интересные части и очистить остальные.

Там также метапочта . Эквивалентом munpackявляется metamail -wy.

Жиль "ТАК - перестань быть злым"
источник
Кроме того, чтобы добавить , что если вы хотите также извлекать текст MIME части сообщения электронной почты при использовании munpackзатем использовать «-t» вариант:munpack -t email_file
Пирз
Спасибо за информацию о metamail. Не могли бы вы помочь мне с этим вопросом ?
Георгий
13

Лучшая программа для этого - ripMIME.

Извлекает текст и все вложения:

https://pldaniels.com/ripmime/

GitHub: inflex / ripMIME

Андреас Рем
источник
4
sudo apt install ripmime работает хоть. Смотрите также linux.die.net/man/1/ripmime . Я использую эту программу; прекрасно работает, никаких зависимостей, кроме libc6.
unhammer
Хорошие вещи, метапочта и munpack недоступны в Ubuntu, но ripmime есть и делает именно то, что ожидал.
Диего
2
  • ДА возможно

  • Это КАК (Ресурс отсюда )

найти каталог, содержащий файлы | во время чтения файла; делать

создать tempdir и скопировать туда файл

запустите munpack для файла и скопируйте вложения в другое место

уничтожить темпдир (содержимое)

сделанный

subanki
источник
Если кто-то хочет, чтобы я
вставил
1
если вы будете так добры (очевидно, оставив указание того, где вы его нашли :))
Уоррен
1
просто прочитайте сценарий ... это чертовски много Perl!
Уоррен
так что вы уверены, что хотите, чтобы я включил это в свой ответ, он станет очень длинным.
субанки
не вставляйте сюда, в этом случае было бы лучше копировать из оригинального источника :)
Уоррен