7

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

WBR,谢谢。

4

2 回答 2

10

只需使用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.
于 2012-07-01T13:17:19.653 回答
5

如果你没有 formail,你也可以使用这个 Perl oneliner(从这里复制,刚刚在我需要拆分的 Thunderbird 收件箱上进行了测试)

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
于 2012-10-03T16:36:43.597 回答