package BrokenRenderer;
use strict;
use warnings;
use base qw( MT::Plugin );
our $VERSION = '0.01';
my $plugin = __PACKAGE__->new({
id => __PACKAGE__,
name => __PACKAGE__,
version => $VERSION,
});
MT->add_plugin($plugin);
no warnings 'redefine';
if (eval { require Email::MIME }) {
*Email::MIME::create = sub { die "render error" };
}
if (eval { require MIME::Lite }) {
*MIME::Lite::new = sub { die "render error" };
}
1;
MT::build_email の中ではメールが空になったらエラーをログに記録しているが、 MT::Mail::MIME::Lite や MT::Mail::Email::MIME の render の中では問題があっても $class->error に登録するだけでログに残していない。また、 MT::Mail::MIME 内部でも render の結果を検証せずにそのまま print などに渡しているため、 render 内部のエラーは握りつぶされてしまっている。build_email の前例を踏襲するなら render の中でエラーになったらその場でログに書き出した方がよさそう。