Когда я 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вариант, о котором говорил Кай. Если эта опция установлена правильно, она бы тоже работала |. Тем не менее, мое решение тоже работает ;-)