Когда я S
нажимаю в Mutt, он сохраняет почту в формате почтовой папки ( cur/ tmp/ new/
), но я хочу, чтобы был сохранен один файл, как и вложения.
Это настраивается?
Когда я S
нажимаю в Mutt, он сохраняет почту в формате почтовой папки ( cur/ tmp/ new/
), но я хочу, чтобы был сохранен один файл, как и вложения.
Это настраивается?
Ответы:
Фактическое сообщение также отображается как вложение, так что вы можете сохранить его из списка вложений. В индексе или в самом сообщении нажмите, vчтобы открыть вложения и sсохранить
Команда s
сохраняет в почтовый ящик, который для вас в формате maildir. К сожалению, нет команды сохранения в файл, возможно, потому что в историческом формате mbox почтовый ящик, содержащий одну почту, является просто файлом, содержащим эту почту.
Для этого можно использовать mutt
команду pipe-message (ярлык по умолчанию |
). Он открывает командную строку и ты пишешь cat > DESIRED-FILE-PATH
.
Опция pipe-decode управляет тем, что происходит с заголовками и пантомимами, когда вы сохраняете сообщение таким способом.
Возможно, можно написать макрос для этой функции.
set pipe_decode=yes
в свой muttrc, именно об этом писал Кай фон Финтель.
=
этом.
Если вы touch
файл, а затем попытаетесь сохранить или скопировать в него сообщение, Mutt будет использовать его как mbox.
Также вы можете использовать копию вместо сохранения. Матт предполагает, что письмо должно существовать только в одной копии, а сохранение сообщения в другом почтовом ящике удалит его из первого, а при копировании будет сделана правильная копия.
Кай фон 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
для извлечения темы и даты? Если это так, вероятно, хорошая идея. Я призываю вас написать ответ; Я определенно одобряю это.
Я перепробовал все предложенные ответы, но не смог получить необработанное, составное (text / plain + text / html) электронное письмо для сохранения в файл, включая его заголовки и все остальное. Мне нужно было это, чтобы заполнить мой спам-фильтр электронной почтой, чтобы научить его, что конкретная почта - это спам или нет ...
Решение, которое я придумал, - это нажать e
(т.е. «отредактировать сообщение») на открытое сообщение, которое открывает необработанное сообщение в выбранном вами редакторе. Необработанный здесь означает, что вы получаете сообщение в точности так, как оно поступило в Mutt, поэтому у вас есть все заголовки и все байты, которые составляют сообщение.
После нажатия e
я просто записываю буфер (я устанавливаю редактор в vim ) в файл с помощью :w <path_to_file>/<file_name>
и все.
PS: Я бы добавил это как комментарий, но для этого нужен определенный уровень репутации. Кроме того, я знаю, что вопрос очень старый, но поскольку neomutt все еще используется многими людьми, я подумал, что это может кому-то помочь.
Обновление: я пропустил pipe-decode
вариант, о котором говорил Кай. Если эта опция установлена правильно, она бы тоже работала |
. Тем не менее, мое решение тоже работает ;-)