如何将邮箱拆分成每封邮件的单个文件?

kqqjbcuj  于 2022-10-17  发布在  Unix
关注(0)|答案(3)|浏览(246)

我想用bash命令把我的收件箱分成几个单独的文件(每条消息一个文件),或者用Java编写一个简单的程序。我该怎么做呢?
WBR,谢谢。

ffscu2ro

ffscu2ro1#

只需使用formail即可。formail是一个程序,可以处理邮箱,对邮箱中的每条消息运行一些操作,分离消息等。
更多信息:http://www.manpagez.com/man/1/formail/
如果你只想把一个邮箱拆分成不同的文件,我建议这样的解决方案:

$ cat $MAIL | formail -ds sh -c 'cat > msg.$FILENO'

来自人类:

FILENO
        While splitting, formail  assigns  the  message  number  currently
        being  output  to  this  variable.   By presetting FILENO, you can
        change the initial message number being used and the width of  the
        zero-padded  output.   If  FILENO is unset it will default to 000.
        If FILENO is non-empty and does not contain a number, FILENO  gen-
        eration is disabled.

注:promail-https://github.com/BuGlessRB/procmail中也包含formail

fslejnso

fslejnso2#

如果你没有formail,你也可以使用这个Perl单行器(从here复制,刚刚在我需要拆分的一个雷鸟收件箱上测试)

perl -pe 'open STDOUT, ">out".++$n if /^From /' < $IN > before_first

或者,使用0填充的数字:

perl -pe 'open STDOUT, sprintf(">m%05d.mbx", ++$n) if /^From /' < $IN > before-first
z18hc3ub

z18hc3ub3#

还有一个专门的git命令可以实现这一点:

mkdir messages
git mailsplit -omessages mbox

相关问题