仅使用bash提取传入电子邮件的正文部分

问题描述:

我使用offlineimap将邮件提取到Maildir文件夹中。仅使用bash提取传入电子邮件的正文部分

我想自动解析Maildir文件夹中的所有新的传入电子邮件,并只发送“from”,“subject”和“body”作为其他地方的即时消息。

所以我试图处理所有的邮件与

MPATH=~/Mail 

if [ -n "$(ls "$MPATH/INBOX/new/")" ]; then 
    for f in "$MPATH/INBOX/new/"*; do 
     SUB="$(cat "$f"|grep '^Subject' | head -n1 | sed "s/Subject: //g")"                      
     FROM="$(cat "$f" | grep '^From' | head -n1 | head -n 1|sed "s/From: //g")"                     
     BODY="$(cat "$f"|sed -e '1,/Content-Transfer-Encoding/d')" 
     MESS="$FROM: $SUB$BODY" 

     echo $f 
     echo "$MESS" 
     mv "$f" "$MPATH/INBOX/cur/" 
    done 
fi 

这已经正常工作了一段简单的电子邮件,但我怎么摆脱这不是普通的身体,像签名,附着物的一切.. 。?

+1

使用邮寄的理解,而不是与简单的字符串黑客它的工具处理? –

+1

我会,如果有一个简单的工具bash命令行? – rubo77

+0

你究竟想在这里做什么? “阅读”你的电子邮件? –

正如评论回答,formailprocmail包似乎很好地完成这项工作:

$ sudo apt-get install procmail 

$ cat test.eml | formail -x To 
[email protected] 

$ cat test.eml | formail -x Subject 
hello 

$ cat test.eml | formail -x Content 
multipart/alternative; boundary="f403043eea78e8658a0554677278" 

现金@glennjackman