1

件名に「Unprovisioned」というテキストが見つかった場合にメールを転送する簡単な procmail レシピの作成に着手しました。

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

残念ながら、メール サーバーから届くメール メッセージの件名フィールドは、MIME エンコードされた単語の構文でした。

形式は次のとおりです: "=?charset?encoding?encoded text?=".

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

上記の件名は utf-8 charset、テキストが 2 行に折りたたまれた base64 エンコーディングです。procmail フィルタを適用できるように、これを解析して文字列形式に変換するメカニズム/スクリプト/ユーティリティがあるかどうか疑問に思っていました。もちろん、これを解析して必要な検証を実行するための perl スクリプトを作成することはできますが、可能であれば回避するようにしています。

4

1 に答える 1

9

Perl に同梱されているEncode::MIME::Headerは、Encode から直接アクセスできます。

use Encode qw(encode decode);
my $header_text = decode('MIME-Header', $header);
于 2012-02-08T16:48:45.257 に答える