perl - 将 utf8 解码为 ISO-8859-1 邮件主题到 .procmailrc 文件中的文本

标签 perl email encoding utf8-decode procmail

开始编写一个简单的 procmail 收件人,如果在主题中发现文本“ABC Store:New Order”,它将转发邮件。

 :0
    * ^(To|From).*abc@cdefgh.com
    * ^Subject:.*ABC Store: New Order*
    {

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

主题:=?UTF-8?B?QUJDIFN0b3JlOiBOZXcgT3JkZXI=?=

上面的主题是 utf-8 ISO-8859-1 字符集,所以想知道是否有任何机制/脚本/实用程序来解析它并转换为字符串格式,以便我可以应用我的 procmail 过滤器。

最佳答案

在分配给 procmail 变量之前,您可以使用 perl oneliner 来解码 Subject:

# Store "may be encoded" Subject: into $SUBJECT after conversion to ISO-8859-1
:0 h
* ^Subject:.*=\?
SUBJECT=| formail -cXSubject: | perl -MEncode=from_to -pe 'from_to $_, "MIME-Header", "iso-8859-1"'

# Store all remaining cases of Subject: into $SUBJECT
:0 hE
SUBJECT=| formail -cXSubject:

# trigger recipe based also on $SUBJECT content
:0
* ^(To|From).*abc@cdefgh.com
* SUBJECT ?? ^Subject:.*ABC Store: New Order
{
....
}
<小时/>

评论 (2020-03-07):转换为 UTF-8 字符集而不是 ISO-8859-* 可能会更好。

关于perl - 将 utf8 解码为 ISO-8859-1 邮件主题到 .procmailrc 文件中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29715013/

相关文章:

shell - shell脚本的find命令中的perl -ane是什么意思?

ios - 使用 mailcore (iOS),我怎样才能从特定的电子邮件地址获取所有电子邮件?

perl - 如何验证占位符?

regex - 在 Perl 中使用 Text::CSV 解析制表符分隔的文件

email - grails 中的异步邮件插件实现

java - 使用 Java Mail API 保存电子邮件(包括图像和 HTML 数据)的最佳方式?

algorithm - 编码/纠错挑战

c++ - C++ 怎么能 wcout utf-16 编码的 char 数组?

assembly - 我应该如何使用英特尔的文档获取与 x86 中的 `ModeR/M` 指令相对应的 `call dword ptr` 字节?

mysql - 在 sql 结果中填充空日期的最直接方法是什么(在 mysql 或 perl 端)?