我使用offlineimap
将邮件提取到Maildir文件夹中。
我想自动解析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
这已经适用于一些简单的电子邮件,但我如何摆脱不是简单的身体的一切,如签名,附件,......?
答案 0 :(得分:1)
按照 formail 联机帮助页上的建议,这对我有用:
cat mailfile | sed -e '1,/^$/ d'
答案 1 :(得分:0)
正如评论中所回答的那样,来自formail
软件包的procmail
似乎可以很好地完成这项工作:
$ sudo apt-get install procmail
$ cat test.eml | formail -x To
test@atleticomadridhistory.com
$ cat test.eml | formail -x Subject
hello
$ cat test.eml | formail -x Content
multipart/alternative; boundary="f403043eea78e8658a0554677278"
致谢:@glennjackman