1

我正在尝试为我的邮件服务器实现某种垃圾邮件报告。邮件按筛子分类,都在一个名为垃圾邮件的文件夹中。我用 bash 遍历文件夹。有了这个,我从邮件中获得了必要的信息:

cat $f | grep '^From' | head -n1 >> $TMPFILE
cat $f | grep '^Subject' | head -n1 >> $TMPFILE

但在某些邮件中,主题是这样编码的

主题:=?ISO-8859-1?Q?Test:_Jaguar_XKR-S:_Unter_dem_Blech_lauert_d?=

我怎样才能得到正确编码的主题?我尝试使用mail、mailx、mutt……但没有人能够简单地从文件中加载邮件。

4

1 回答 1

1

主题行中的编码看起来像MIME Words。解码数据的一种可能方法是编写一个使用MIME::Words模块的 perl 脚本。您可以将 perl 脚本设为 shell 脚本并从您的 bash 脚本中调用它。

转换主题.sh:

 #!/bin/sh
 /usr/bin/perl -pe 'use MIME::Words(decode_mimewords); $_=decode_mimewords($_);'

使用脚本的示例:

$ echo "=?ISO-8859-1?Q?Test:_Jaguar_XKR-S:_Unter_dem_Blech_lauert_d?=" | sh convert_subject.sh

哪个输出:

Test: Jaguar XKR-S: Unter dem Blech lauert d
于 2012-08-20T15:34:05.307 回答