Відповіді:
Фактичне повідомлення відображається і як додаток, тому його можна зберегти зі списку вкладень. vЩоб відкрити вкладення та sзберегти , натисніть будь-який індекс чи повідомлення
s
Команда зберігає в поштову скриньку, який для вас в MailDir форматі. На жаль, не існує команди збереження до файлу, можливо, тому що в історичному форматі mbox поштова скринька, яка містить одну пошту, - це лише файл, що містить цю пошту.
Для цього можна використовувати mutt
команду pipe-message (ярлик за замовчуванням |
). Він відкриває командний рядок, і ви пишете cat > DESIRED-FILE-PATH
.
Параметр "pipe-decode" керує тим, що відбувається з заголовками та частинами mime, коли ви зберігаєте повідомлення таким чином.
Можливо, можна було б написати макрос для цієї функції.
set pipe_decode=yes
до мого мутртру, було те, про що писав Кай фон Фінтел.
=
цьому.
Якщо ви touch
створили файл, а потім спробуєте зберегти або скопіювати повідомлення до нього, mutt використовуватиме його як mbox.
Також ви можете використовувати копію замість збереження. Mutt припускає, що пошта повинна існувати лише в одній копії, а збереження повідомлення в іншу поштову скриньку видалить її з першої, а копіювання зробить належну копію.
Кай фон 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
в сценарії?
formail
, тому я прочитав. Однак я не зовсім впевнений, на яку частину мого сценарію ви зверталися? Використовується formail
для вилучення теми та дати? Якщо так, напевно, приємна ідея. Я б закликав вас написати відповідь; Я б точно визнав це.
Я спробував усі запропоновані відповіді, але не зміг зберегти необроблений, багаточастинний (текст / звичайний + текст / html) електронний лист у файл, включаючи його заголовки та все. Мені це було потрібно, щоб подати мій спам-фільтр електронною поштою, щоб навчити його, що певна пошта є спамом чи ні ...
Я придумав рішення - натиснути e
(тобто "редагувати повідомлення") на відкрите повідомлення, яке відкриває необроблене повідомлення у вашому редакторі на вибір. Raw тут означає, що ви отримуєте повідомлення саме так, як воно надійшло в mutt, тому у вас є всі заголовки та всі байти, що містять повідомлення.
Після натискання e
я просто записую буфер (я встановлюю редактор vim ) у файл із :w <path_to_file>/<file_name>
і все.
PS: Я б додав це як коментар, але для цього вам потрібен певний рівень репутації. Крім того, я знаю, що питання дуже старе, але оскільки неомутт все ще використовується багатьма людьми, я думав, що це може комусь допомогти.
Оновлення: я пропустив pipe-decode
варіант, про який Кай говорив. При правильному встановленні цього параметра він би також працював через |
. І все-таки моє рішення працює ;-)