2016-03-23 5 views
2

Ich verwende offlineimap, um die Mails in einen Maildir-Ordner zu holen.Extrahieren Sie nur den Körperteil der eingehenden E-Mails mit bash

Ich möchte alle neu eingehenden E-Mails in einem Maildir-Ordner automatisch analysieren und nur die "von", "Betreff" und "Körper" als Sofortnachricht woanders senden. Diese bereits funktioniert gut für einige einfache E-Mails

Also versuche ich, mit

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 

alle E-Mails zu verarbeiten, aber wie bekomme ich alles loswerden, die nicht die Ebene Körper ist, wie Signaturen, attachements, .. .?

+1

Verwenden Sie ein Tool, das anstelle von Hacking es versteht Mail up mit einfachen String wird bearbeitet? –

+1

Ich würde, wenn es ein einfaches Tool für die Bash-Kommandozeile gibt? – rubo77

+0

Was machst du eigentlich hier? "Lesen" Sie Ihre E-Mail? –

Antwort

0

Wie in den Kommentaren antwortete formail vom procmail Paket scheint sich gut um die Arbeit zu tun:

$ 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" 

Credits: @glennjackman