MT::Mail::MIME 関係のモジュールがメールのレンダリング時にエラーとなってもログに記録されない

Description

MT::build_email の中ではメールが空になったらエラーをログに記録しているが、 MT::Mail::MIME::Lite や MT::Mail::Email::MIME の render の中では問題があっても $class->error に登録するだけでログに残していない。また、 MT::Mail::MIME 内部でも render の結果を検証せずにそのまま print などに渡しているため、 render 内部のエラーは握りつぶされてしまっている。build_email の前例を踏襲するなら render の中でエラーになったらその場でログに書き出した方がよさそう。

Checklists

None

Activity

Show:

Shigeki IkedaNovember 22, 2024 at 1:01 AM

ご確認ありがとうございます。

マージしました

Reiko SatoNovember 20, 2024 at 6:20 AM


システムログに

Failed to encode mail:render error at /mt-dev/movabletype/plugins/BrokenRenderer/BrokenRenderer.pl line 23.

のようなエラーが出る事を確認。

Shigeki IkedaNovember 19, 2024 at 9:32 AM

ありがとうございます!どのようにQAすれば良いかと考えていました

本件対応いたしました。

ひとつ下のコメントにある石垣さんに記載いただいた方法でテストメールを送信いただき、システムのエラーログが残ることをご確認お願いいたします。

Kenichi IshigakiNovember 19, 2024 at 6:51 AM

ありがとうございます。よさそうです。QAがむずかしそうですが、 MailModule の設定が Email::MIME 、 MIME::Lite の場合のそれぞれでメール送信が問題なくできることと、以下のようなプラグインを plugins/BrokenRenderer/BrokenRenderer.pl として入れてもらったうえで、システム全般設定でテストメールを送信したらエラーのログが残ることを確認してもらえばよいかなとおもいます。

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;

Shigeki IkedaNovember 19, 2024 at 5:43 AM

遅くなりすみません。対応しました。ご確認お願いいたします。

Implemented

Details

Assignee

Reporter

Fix versions

Priority

Smart Checklist

Created December 15, 2023 at 12:25 PM
Updated November 22, 2024 at 1:01 AM
Resolved November 19, 2024 at 9:32 AM