2012-07-01 40 views
4

我想通過bash命令將我的收件箱拆分爲單獨的文件(每個消息一個文件),或者可能是Java中的簡單程序。我該怎麼做?如何將郵箱拆分爲單個文件?

WBR,Thanx。

+0

如果您正在使用MBOX,[這]( http://www.qmail.org/man/man5/mbox.html)可以提供幫助。並且[this](http://linuxcommand.org/man_pages/formail1.html) – hamed

回答

6

只需使用formailformail是一個程序,可以處理郵箱,對郵箱中的每封郵件執行一些操作,分離郵件等。

更多信息: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. 
+0

如果你想分割不是每個郵件而是每個文件大小,那麼你將如何使用bash和formail來做到這一點,以便最大值爲n mb每個分割生成? – Alex

+0

'formail'是我機器上的procmail('apt-get install procmail')的一部分。 –

3

如果你不沒有formail,你也可以使用這個Perl oneliner(複製從here,並剛剛在我需要的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 
4

的Git可以做到這一點爲好,例如

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

對於我的郵箱(通過谷歌外賣從Gmail中導出),這個錯誤與'腐敗郵箱'出錯了。這似乎是由於來自'from 153543865244474185 @ xxx Fri May 27 12:18:45 +0000 2016'的時區標記引起的,perl方式雖然工作正常。 –

相關問題