将base64编码的邮件转换为文本

时间:2012-02-08 16:15:52

标签: perl unix procmail

开始编写一个简单的procmail收件人,如果在主题中找到“Unprovisioned”文本,则会将邮件转发给我。

:0:
* ^Subject:.*Unprovisioned.*
! me@test.com

不幸的是,来自邮件服务器的邮件消息中的主题字段是MIME编码字语法。

表单是:“=?charset?encoding?encoded text?=”。

 Subject: =?UTF-8?B?QURWSVNPUlk6IEJNRFMgMTg0NSwgTkVXIFlPUksgLSBVbnByb3Zpc2lvbmVkIENvbm4gQQ==?=
    =?UTF-8?B?bGVydA==?=

以上主题是utf-8字符集,base64编码,文本折叠为两行。所以想知道是否有任何机制/脚本/实用程序来解析它并转换为字符串格式,以便我可以应用我的procmail过滤器。当然,我可以编写一个perl脚本来解析这个执行所需的验证,但是如果可能的话,希望避免它。

1 个答案:

答案 0 :(得分:9)

与Perl一起提供的

Encode::MIME::Header,可通过Encode直接访问:

use Encode qw(encode decode);
my $header_text = decode('MIME-Header', $header);