2

我用来offlineimap将邮件提取到 Maildir 文件夹中。

我想自动解析 Maildir 文件夹中的所有新收到的电子邮件,并仅将“发件人”、“主题”和“正文”作为即时消息发送到其他地方。

所以我尝试处理所有邮件

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

这已经适用于一些简单的电子邮件,但我如何摆脱不是普通正文的所有内容,如签名、附件……?

4

2 回答 2

2

正如formail手册页上所建议的那样,这对我有用:

cat mailfile | sed -e '1,/^$/ d' 
于 2021-02-02T22:42:18.813 回答
1

正如评论中所回答的那样,formailprocmail包装中似乎可以很好地完成工作:

$ 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

于 2017-07-16T04:45:53.267 回答