Answers:
该s
命令将以maildir格式保存到您的邮箱中。不幸的是,没有保存到文件的命令,可能是因为使用历史mbox格式,包含单个邮件的邮箱只是包含该邮件的文件。
可以使用mutt
命令管道消息(默认快捷方式|
)。它打开一个命令行,然后您编写cat > DESIRED-FILE-PATH
。
当您以这种方式保存消息时,“ pipe-decode”选项控制标题和mime部分会发生什么。
人们可能会为此功能编写一个宏。
set pipe_decode=yes
我的muttrc就是Kai von Fintel在写什么。
=
这样做的未处理换行符。
凯文·芬特尔(Kai von Fintel)的答案非常完美,但是我只是想共享一个宏来简化此过程。
首先,在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:我会将此添加为评论,但您需要具有一定声誉才能做到这一点。另外,我知道这个问题非常老,但是由于许多人仍在使用neomutt,因此我认为这可能会对某人有所帮助。
更新:我忽略了pipe-decode
Kai在谈论的选项。正确设置该选项,它也可以通过进行工作|
。我的解决方案仍然有效;-)