Извлечь / сохранить почтовое вложение, используя 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 для файла и скопируйте вложения в другое место

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

сделанный


Если кто-то хочет, чтобы я
вставил

1
если вы будете так добры (очевидно, оставив указание того, где вы его нашли :))
Уоррен

1
просто прочитайте сценарий ... это чертовски много Perl!
Уоррен

так что вы уверены, что хотите, чтобы я включил это в свой ответ, он станет очень длинным.
субанки

не вставляйте сюда, в этом случае было бы лучше копировать из оригинального источника :)
Уоррен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.