2012-02-08 13 views
1

件名に「プロビジョニングされていません」というテキストが見つかった場合は、メールを私に転送する簡単なprocmailレシピを書くように設定します。base64でエンコードされたメールをテキストに変換する

:0: 
* ^Subject:.*Unprovisioned.* 
! [email protected] 

残念ながら、メールサーバーから送信されるメールメッセージの件名フィールドは、MIMEエンコードされた単語の構文になっていました。

フォームは、"=?charset?encoding?encoded text?="です。

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

上記被験体は、UTF-8文字セット、2つのライン折り畳まテキストでbase64エンコーディングです。だから私は私のprocmailフィルタを適用することができるようにこれを解析し、文字列形式に変換する任意のメカニズム/スクリプト/ユーティリティがあるのだろうかと思っていた。もちろん、これを解析して必要なバリデーションを実行するPerlスクリプトを書くこともできますが、可能ならばそれを避けるために探します。

エンコードから直接アクセスPerlで船、
+1

ます(http:// WWW .youtube.com/user/yapcasia#p/u/0/JENdgiAPD6c))、メッセージを解析するために[Courriel](http://p3rl.org/Courriel)に切り替えることを検討してください。 – daxim

+0

接尾辞の '。*'は冗長です。 – tripleee

答えて

9

Encode::MIME::Header、:[!メールとMIMEはトリッキーです]あなたが包まれたヘッダのようなエッジケース(、と暗礁に乗り上げる場合

use Encode qw(encode decode); 
my $header_text = decode('MIME-Header', $header); 
関連する問題