diff --git a/bin/mailsync b/bin/mailsync index 537e0f1..1f2aa32 100755 --- a/bin/mailsync +++ b/bin/mailsync @@ -70,9 +70,16 @@ syncandnotify() { echo "$newcount new mail for $2." [ -z "$MAILSYNC_MUTE" ] && for file in $new; do - # Extract subject and sender from mail. - from="$(sed -n "/^From:/ s/\(.*: \| *<.*\)//g p" "$file")" - subject="$(sed -n "/^Subject:/ s|.*: || p" "$file")" + # Extract subject and sender from mail. TODO: beautify and clean up. + from=$(awk '/^From: / && ++n ==1,/^\<.*\>:/' "$file" | + perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | + awk '{ $1=""; if (NF>=3)$NF=""; print $0 }' | + sed 's/^[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//') + subject=$(awk '/^Subject: / && ++n == 1,/^\<.*\>: / && ++i == 2' "$file" | + head -n 1 | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | + sed 's/^Subject: //' | + sed 's/^{[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//' | + tr -d '\n') notify "📧$from:" "$subject" done ;;