仅使用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
这已经正常工作了一段简单的电子邮件,但我怎么摆脱这不是普通的身体,像签名,附着物的一切.. 。?
答
正如评论回答,formail
从procmail
包似乎很好地完成这项工作:
$ 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
使用邮寄的理解,而不是与简单的字符串黑客它的工具处理? –
我会,如果有一个简单的工具bash命令行? – rubo77
你究竟想在这里做什么? “阅读”你的电子邮件? –