我有以下场景:
GNU/Linux 机器上的 SMTP 服务器正在接受邮件。已接受的邮件正在发送到 procmail 以进行进一步处理。这是我的.procmailrc:
VERBOSE=yes
LOGFILE=$HOME/procmail.log
SUBJECT=`formail -xSubject: | tr -d '\n' | sed -e 's/^ //' | /usr/bin/perl -MEncode -ne 'print encode ("utf8",decode ("MIME-Header",$_ )) '`
FROM=`formail -rt -xTo:`
DATE=`formail -xDate:`
BODY=`formail -I ""`
:0fbW
* ^From.*some_special_name@special_server.com
| echo "FROM:$FROM" > $HOME/res.txt; \
echo "DATE:$DATE" >> $HOME/res.txt; \
echo "SUB:$SUBJECT" >> $HOME/res.txt; \
echo "BODY:" >> $HOME/res.txt; \
echo $BODY >> $HOME/res.txt; process.py
这个小脚本首先创建一个本地文件$HOME/res.txt,然后启动另一个名为process.py的脚本。现在,$HOME/res.txt填充了以下条目:
FROM:some_special_name@special_server.com
DATE:Mon, 06 Oct 2014 13:14:32 +0200
SUB:Some subject
BODY:
This is a multi-part message in MIME format. --------------030006020609010705060803 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hello, Some kind of long tekst where I cannot see the line feed chars nor any other control chars...
正文包含没有正文的原始格式的原始字符串。我的意思是过滤掉 \n 或 \t 字符。process.py脚本要求消息的正文部分保持电子邮件消息的原始格式。
我怎样才能做到这一点?