将电子邮件另存为Mutt文件吗?


28

当我按Smutt 键时,它会将邮件保存为邮件文件夹格式(cur/ tmp/ new/),但是我希望保存一个文件,就像保存附件一样。

那是可配置的吗?

Answers:


23

实际的消息也显示为附件,因此您可以从附件列表中保存它。从索引或邮件本身,单击v以打开附件并s保存


请注意:如果您的电子邮件包含附件,则仅保存附件列表中的第一个条目将保存邮件-但其中不包含附件。
sdaau,2015年

3
另一个注意事项:这不会保存任何标题,包括发件人,收件人和主题。
Sparhawk

31

s命令将以maildir格式保存到您的邮箱中。不幸的是,没有保存到文件的命令,可能是因为使用历史mbox格式,包含单个邮件的邮箱只是包含该邮件的文件。

可以使用mutt命令管道消息(默认快捷方式|)。它打开一个命令行,然后您编写cat > DESIRED-FILE-PATH

当您以这种方式保存消息时,“ pipe-decode”选项控制标题和mime部分会发生什么。

人们可能会为此功能编写一个宏。


太好了,这也可以保存标题,但是现在,我将使用Michael的方式,谢谢!
雏菊

1
这样效果很好,并提供了将50多封电子邮件(使用模式匹配标记)保存到文件的有效方式。我不得不花点时间才能发现,通过添加set pipe_decode=yes我的muttrc就是Kai von Fintel在写什么。
Screenack

同样,这也会将附件保存在导出的电子邮件文件中。
sdaau,2015年

很好,但是我看到=这样做的未处理换行符。
杰克·瓦西

太棒了 这对我来说很棒。我只想从过时的Maildir中提取20多个电子邮件。干杯!
prageeth

10

如果您touch是一个文件,然后尝试将消息保存或复制到该文件,则mutt会将其用作mbox。

另外,您可能想使用复制而不是保存。Mutt假定邮件仅应存在于一个副本中,并且将邮件保存到另一个邮箱会将其从第一个邮箱中删除,而复制将进行正确的复制。


1
我需要获取带有完整标题的消息,然后将其粘贴到过滤器测试脚本中,并且此方法非常有效。
索伦·比约恩斯塔德

2

凯文·芬特尔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在脚本中使用起来会更容易吗?
0andriy

@ 0andriy我不熟悉formail,所以我看了书。但是,我不确定您指的是脚本的哪一部分?使用formail提取主题和日期?如果是这样,可能是个好主意。我敦促你写一个答案。我肯定会赞成。
Sparhawk

0

我已经尝试了所有建议的答案,但是无法将原始的多部分电子邮件(文本/纯文本+文本/ html)保存到文件中,包括标头和所有内容。我需要用它来向垃圾邮件过滤器发送电子邮件,以告诉它特定的邮件是否为垃圾邮件...

我想出的解决方案是e在打开的消息上按(即“编辑消息”),这将在您选择的编辑器中打开原始消息。此处的Raw表示,您获得的消息与到达Mutt时的消息完全相同,因此您拥有构成消息的所有标头和所有字节。

点击之后e,我只是将缓冲区(我将编辑器设置为vim)写入一个文件:w <path_to_file>/<file_name>,就是这样。

PS:我会将此添加为评论,但您需要具有一定声誉才能做到这一点。另外,我知道这个问题非常老,但是由于许多人仍在使用neomutt,因此我认为这可能会对某人有所帮助。

更新:我忽略了pipe-decodeKai在谈论的选项。正确设置该选项,它也可以通过进行工作|。我的解决方案仍然有效;-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.