« できたかも。 | メイン | TEMPUS AURUM now on sale. »

MovableType3.151でメール通知機能がおかしい

どうもMovableTypeのメール通知機能がおかしい。
色々調べてみると、結構有名な問題点らしい。
僕の場合、TypeKeyで書き込むと通知されるため、問題を正しく認識してなかったわけですが、
よくよく調べてみると、正に同じ症状の方を発見。
...ということは、TypeKey経由の書き込みと、それ以外の書き込みの分岐処理に問題あり?
と見当をつけてソースをチェック。
で、mt/lib/MT/App/Comments.pm内L349〜373に同様の記述を発見(長いけどそのまま貼ります)。


if ($comment->visible) {
# Rebuild the entry synchronously so that if the user gets
# redirected to the indiv. page it will be up-to-date.
$app->rebuild_entry( Entry => $entry )
or return $app->error($app->translate(
"Rebuild failed: [_1]", $app->errstr));
# Index rebuilds and notifications are done in the background.
MT::Util::start_background_task(sub {
$app->rebuild_indexes( Blog => $blog )
or return $app->error($app->translate(
"Rebuild failed: [_1]", $app->errstr));
my $send_notfn_email = 0;
if (!$commenter) {
$send_notfn_email = !$comment->visible();
} else {
$send_notfn_email = !$commenter_has_comment
&& !$comment->visible();
}
if ($blog->email_new_comments || $send_notfn_email)
{
$app->_send_comment_notification($comment, $comment_link,
$entry, $blog);
}
});
}

この箇所の順番を若干入れ替えて、


if ($comment->visible) {
# Rebuild the entry synchronously so that if the user gets
# redirected to the indiv. page it will be up-to-date.
$app->rebuild_entry( Entry => $entry )
or return $app->error($app->translate(
"Rebuild failed: [_1]", $app->errstr));
# Index rebuilds and notifications are done in the background.
MT::Util::start_background_task(sub {
$app->rebuild_indexes( Blog => $blog )
or return $app->error($app->translate(
"Rebuild failed: [_1]", $app->errstr));
});
}
my $send_notfn_email = 0;
if (!$commenter) {
$send_notfn_email = !$comment->visible();
} else {
$send_notfn_email = !$commenter_has_comment
&& !$comment->visible();
}
if ($blog->email_new_comments || $send_notfn_email)
{
$app->_send_comment_notification($comment, $comment_link,
$entry, $blog);
}

とすると、問題なく動く様になりました。^^

要するに、書き込みをそのまま再構築に回して良い時(TypeKey経由の書き込みとか)のみ再構築→通知の命令に入るという原文から、
通知の命令を独立させた感じっす。
乱暴な直し方かもしれないけど、結局これしかないのではないかと。思いました。

トラックバック

このエントリーのトラックバックURL:
http://www.chihuahua.gr.jp/mt/mt-tb.cgi/311

この一覧は、次のエントリーを参照しています: MovableType3.151でメール通知機能がおかしい:

» 「コメントの事前確認を有効にする」にしているとコメントが付いてもメール通知が来ないのはいいの? 送信元 京ぽんでモブログ
 今日は連休明けのぼ〓っとする間もなく忙しい一日でした。  そんな中、今日気が付... [詳しくはこちら]

» コメント機能充実 送信元 Miyuki's Diary
ここの記事にコメントをいただくとメールで通知が来るように設定していたのですが、こ... [詳しくはこちら]

コメント (6)

私の場合は「コメント書込みを承認するまで保留」変更したら通知がこなくなりました。naokiさんの記事に気がつかずに自分でコメントの処理を調べてみると同じところを発見。ちょっと怖かったのでelseでメール送信の処理をするようにしました。
その後、naokiさんの記事を見て安心しました。

chankenさん、はじめまして。
この問題、他の方はどうしてるのかなぁ。。。と、とても気になってます。。。
こうするしかないような気がするんですけどねぇ。
また、お返事を書こうとしたらTypeKeyで書き込めないという不具合を見つけ、
色々試した(テンプレート再構成も含め・・・^^;)結果、
サーバの時計が狂っていたため、
TypeKey発行のtimestampが期限切れとして扱われていたという、
とってもマヌケな結論に至りました。
こういうのを無駄骨というのでしょう。。。ま、勉強になったから良しとしつつ。
今後とも是非こちらへのぞきに来て下さい。

naokiさん、はじめまして。
naokiさんの記事を拝見して、私もきちんと保留コメントのメール通知を受け取ることができるようになりました。
有用な情報をありがとうございました。

かっぱさん。
comment & trackbackありがとうございます。
参考にしていただければ、幸いです。
こーゆー情報の共有に、blogってほんと便利ですね。^^

はじめまして。
コメント機能の不具合の解決方法をどうもありがとうございました。
なぜメール通知ができないのか、困り果てていたところでした。
こちらのおかげで解決できました。

roseさん。はじめまして。
この問題、悩んでる方が多いようですね・・・
参考にしていただければ幸いです!

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

Contact

    My status

About

2005年03月25日 07:08に投稿されたエントリーのページです。

ひとつ前の投稿は「できたかも。」です。

次の投稿は「TEMPUS AURUM now on sale.」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type 3.37