2016-03-23 2 views
2

Я использую offlineimap для извлечения писем в папку Maildir.Извлеките только часть тела входящих писем с помощью bash

Я хочу автоматически анализировать все новые входящие сообщения в папке 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 

Это уже отлично работает для некоторых простых писем, но как я могу избавиться от всего, что не равнина тела, как подписи, отсоединяемые, .. .?

+1

использовать инструмент, который понимает почту вместо взлома его с простой строки обработка? –

+1

Я бы, если есть простой инструмент для командной строки bash? – rubo77

+0

Что вы на самом деле пытаетесь сделать здесь? «Прочитайте» свою электронную почту? –

ответ

0

Как ответили в комментариях, 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

Смежные вопросы