Збереження електронної пошти як файл у mutt?


28

Коли я натискаю Smutt, він зберігає пошту у форматі папки пошти ( cur/ tmp/ new/), але я хочу зберегти один файл, як і збереження вкладень.

Це налаштовується?

Відповіді:


23

Фактичне повідомлення відображається і як додаток, тому його можна зберегти зі списку вкладень. vЩоб відкрити вкладення та sзберегти , натисніть будь-який індекс чи повідомлення


Лише зауваження: якщо ваше електронне повідомлення містить вкладені файли, то збереження лише першого запису зі списку вкладених файлів дозволить зберегти повідомлення, але без вкладених файлів всередині.
sdaau

3
Ще одна примітка: це не врятує жодних заголовків, включаючи відправника, одержувача та тему.
Sparhawk

31

sКоманда зберігає в поштову скриньку, який для вас в MailDir форматі. На жаль, не існує команди збереження до файлу, можливо, тому що в історичному форматі mbox поштова скринька, яка містить одну пошту, - це лише файл, що містить цю пошту.

Для цього можна використовувати muttкоманду pipe-message (ярлик за замовчуванням |). Він відкриває командний рядок, і ви пишете cat > DESIRED-FILE-PATH.

Параметр "pipe-decode" керує тим, що відбувається з заголовками та частинами mime, коли ви зберігаєте повідомлення таким чином.

Можливо, можна було б написати макрос для цієї функції.


Класно, це також може врятувати заголовки, але поки що я використовую шлях Майкла, дякую!
ромашка

1
Це добре працює і забезпечує ефективний спосіб збереження 50+ електронних листів (використовуючи теги відповідності шаблону) у файл. Мені довелося трохи копати, щоб дізнатися, що, додаючи set pipe_decode=yesдо мого мутртру, було те, про що писав Кай фон Фінтел.
Screenack

Крім того, це також зберігає вкладення у експортований файл електронної пошти.
sdaau

це нормально, але я бачу необроблені розриви рядків при =цьому.
Джек Уейсі

Дивовижно. Це чудово працювало для мене. Я просто хотів витягнути десь 20+ листів із застарілого Maildir. Ура!
prageeth

10

Якщо ви touchстворили файл, а потім спробуєте зберегти або скопіювати повідомлення до нього, mutt використовуватиме його як mbox.

Також ви можете використовувати копію замість збереження. Mutt припускає, що пошта повинна існувати лише в одній копії, а збереження повідомлення в іншу поштову скриньку видалить її з першої, а копіювання зробить належну копію.


1
Мені потрібно було отримати повідомлення з повними заголовками, щоб вставити його у сценарій тестування фільтру, і це спрацювало чудово.
Soren Bjornstad

2

Кай фон Fintel «s відповідь працює відмінно, але я просто подумав , що я розділю макрос раціоналізувати цей процес.

По-перше, у muttrc:

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

Це передає повний електронний лист (включаючи заголовки та вкладення) до наступного сценарію. Створіть виконуваний файл у ~/.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"

Цей скрипт зберігає файл до першого аргументу (тобто у muttrcнаведеному вище прикладі електронну пошту буде збережено /tmp). Формат імені файлу такий YYMMDD SUBJECT.eml. Він також перетворюється /на те, щоб запобігти створенню підкаталогів.


Не було б простіше використовувати formailв сценарії?
0андрій

@ 0andriy я не знайомий formail, тому я прочитав. Однак я не зовсім впевнений, на яку частину мого сценарію ви зверталися? Використовується formailдля вилучення теми та дати? Якщо так, напевно, приємна ідея. Я б закликав вас написати відповідь; Я б точно визнав це.
Спархак

0

Я спробував усі запропоновані відповіді, але не зміг зберегти необроблений, багаточастинний (текст / звичайний + текст / html) електронний лист у файл, включаючи його заголовки та все. Мені це було потрібно, щоб подати мій спам-фільтр електронною поштою, щоб навчити його, що певна пошта є спамом чи ні ...

Я придумав рішення - натиснути e(тобто "редагувати повідомлення") на відкрите повідомлення, яке відкриває необроблене повідомлення у вашому редакторі на вибір. Raw тут означає, що ви отримуєте повідомлення саме так, як воно надійшло в mutt, тому у вас є всі заголовки та всі байти, що містять повідомлення.

Після натискання eя просто записую буфер (я встановлюю редактор vim ) у файл із :w <path_to_file>/<file_name>і все.

PS: Я б додав це як коментар, але для цього вам потрібен певний рівень репутації. Крім того, я знаю, що питання дуже старе, але оскільки неомутт все ще використовується багатьма людьми, я думав, що це може комусь допомогти.

Оновлення: я пропустив pipe-decodeваріант, про який Кай говорив. При правильному встановленні цього параметра він би також працював через |. І все-таки моє рішення працює ;-)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.