MIME::Parserで宛先だけ変えて転送する

パッケージのリファレンスを見つつそのまま素直に書けばできる。

use MIME::Parser;
$self = {};
$self->{parser} = MIME::Parser->new;
$self->{parser}->output_dir(".");
$self->{entity} = $self->{parser}->parse(STDIN);

my $headers = $self->{entity}->head;
$headers->replace('From', "mail-sender\@example.com");
$headers->replace('To', "mail-recipient\@example.com");

print $self->{entity}->as_string;

MIME::Headreplaceでヘッダが置き換えられるので、それで上書きしてas_stringで出力するだけ。

perlはシリアライズするときのメソッドがどのモジュールもだいたいas_stringっていうのはいいカルチャーだ。PEARにはそういうのないよね。


About this entry