使用正确的编码从maildir目录中读取邮件并在bash中使用

时间:2012-08-20 14:51:29

标签: bash character-encoding maildir

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

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

但在某些邮件中,主题的编码方式如下

  

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

如何以正确的编码方式获取主题?我试图使用mail,mailx,mutt ......但是没有人能够简单地从文件中加载邮件。

1 个答案:

答案 0 :(得分:1)

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

convert_subject.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