新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2008-10-24

[Perl]Email::FilterとかEmail::Simpleでheaderメソッド使ってFromを取得するときの注意

2009-01-01 追記
この記事は盛大に誤爆しております。実際には、Email::FilterもEmail::SimpleもきちんとFromヘッダを取り回してくれますので、ご安心ください。
詳細は、この記事および、この実証記事をご確認ください。m(_ _)m


メールに自動返信するプログラムを書く際、Email::Filter-1.032Email::Simple-2.004を使ったりするんだけど、こいつらではうまく取得できないFrom値が存在するみたい。

例えば、SoftBankの705SHから送信されたメールのFrom欄。

<****************@softbank.ne.jp>


こういう風に、<〜>で囲われていて、かつ表示名称(※)が無いものは、これらのモジュールだとうまく取得できない。

以下、実証コード。


#!/usr/bin/perl
use Email::Filter;
use Data:Dumper;
my $email = Email::Filter->new;
my $log = '/tmp/email_filter.log';
open my $LOG, '>>', $log;
print $LOG Dumper $email->header( 'From' );
close $LOG;


これをpostfixで受けれるように、/etc/aliasesを編集。
test: "|/path/to/script.pl"


で、実際にメールを食わせてログ見てみると、
$VAR1 = '';


あまり暇が無いので、取り敢えずメモに止めておく。

※表示名称ってのはこういうのです。
山田 三郎 <****************@softbank.ne.jp>

(正式名称じゃないです。きっと。)

0 件のコメント: