如何将邮箱拆分为单个文件?

时间:2012-07-01 12:20:25

标签: java linux bash email unix

我想通过bash命令将我的收件箱拆分为单独的文件(每个邮件一个文件),或者可能是Java中的简单程序。我该怎么办?

WBR,Thanx。

3 个答案:

答案 0 :(得分:9)

只需使用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.

答案 1 :(得分:6)

Git也可以这样做,例如

wget ftp://lists.gnu.org/bug-tar/2014-09
git mailsplit -o. 2014-09

答案 2 :(得分:3)

如果你没有正式,你也可以使用这个Perl one liner(从here复制,刚刚在我需要拆分的Thunderbird Inbox上测试)

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