コメントへ返信したときに、コメントしてくれた人に対して通知メールを送るプラグインとして、「MT-Notifier」がよく使われています。
先日、PhotoPierreさんから、MT-Notifierがバージョンアップして3.4.1になったことを教えていただきました。
ただ、MT-Notifierをそのままで使うと、通知メールのメッセージが英語になり、日本語部分が文字化けします。
前バージョンのMT-Notifier 3.2.7の日本語化手順は、こちらのエントリーで解説しています。
しかし、MT-Notifier 3.4.1では中身が変わっていて、3.2.7とは違う手順で日本語化する必要がありました。
そこで、インストールも含めて、MT-Notifier 3.4.1の日本語化手順を解説します。
1.MT-Notifier 3.4.1のインストール
MT-Notifier 3.4.1は、以下からダウンロードすることができます。ページの右上の方に、ダウンロードのリンクがあります。
ダウンロードしたファイルは、Zip形式になっています。
ファイルを解凍すると、「php」と「plugins」の2つのフォルダができます。
「plugins」フォルダの中身を、ディレクトリ構造を保ったまま、Movable Typeの「plugins」フォルダにアップロードします(Movable Typeの「plugins」ディレクトリの中に、「Notifier」ディレクトリができるようにアップロードする)。
アップロードが終わったら、MTのディレクトリ/plugins/Notifier/mt-notifier.cgiのパーミッションを書き換え、実行可能に設定します。
2.初期化
MT-Notifierを新規にインストールする場合は、Movable Typeにログインした状態で、以下のURLにアクセスします。
http://Movable Typeのインストール先/plugins/Notifier/mt-notifier.cgi?__mode=loader
「Your system is installed and ready to use!」と表示されれば、初期化は完了です。
また、旧バージョン(2.x.x)から設定を受け継ぐ場合は、以下のURLにアクセスします。
http://Movable Typeのインストール先/plugins/Notifier/mt-notifier.cgi?__mode=import&from=n2x
なお、MT-Notifierの前バージョン(3.2.7)からバージョンアップする場合は、上記の作業は行いません。
3.送信元メールアドレスの設定
Movable Typeにログインし、「システム・メニュー」の「プラグイン」を開いて、プラグイン一覧を表示します。
その中に「MT-Notifier」が表示されますので、「設定を表示」のリンクをクリックします。
「Address to use when sending notifications and no other addresses are available:」という欄がありますので、通知メールの送信元メールアドレス(通常はご自分のメールアドレス)を入力し、「変更を保存」ボタンをクリックします。
4.コメント送信フォームの書き換え
次に、コメント送信フォームに「このコメントに返信があったらメールで通知する」というチェックボックスを追加します。
エントリーアーカイブテンプレートを開き、「<textarea・・・>~<t/extarea>」の部分を検索します。
そして、その直後に以下のタグを追加します。
<br /><label for="subscribe"><input type="checkbox" name="subscribe"> このコメントに返信があったらメールで通知する</label>
5.notifier.pmの書き換え
MTのディレクトリ/plugins/Notifier/lib/Notifier.pmを開き、651行目~654行目を書き換えます。
ファイルの書き換えが終わったら、元のファイルに上書きでアップロードします。
書き換え前後の内容は以下の通りです。
書き換え前
my $mgr = MT::ConfigMgr->instance;
my $xfer = $mgr->MailTransfer;
if ($xfer eq 'sendmail') {
return MT::Mail->_send_mt_sendmail($hdrs, $body, $mgr);
書き換え後
my $mgr = MT::ConfigMgr->instance;
my $xfer = $mgr->MailTransfer;
my $enc = $mgr->PublishCharset || 'utf-8';
my $mail_enc = $mgr->MailEncoding || 'iso-8859-1';
require MT::I18N;
$body = MT::I18N::encode_text($body,$enc,$mail_enc);
$hdrs->{Subject} = MT::I18N::encode_text($hdrs->{Subject}, $enc, $mail_enc);
$hdrs->{'Content-Type'} = qq(text/plain; charset="$mail_enc");
$hdrs->{'Content-Transfer-Encoding'} = (lc $mail_enc ne 'utf-?8') ? '7bit' : '8bit';
$hdrs->{'MIME-Version'} = "1.0";
if ($xfer eq 'sendmail') {
return MT::Mail->_send_mt_sendmail($hdrs, $body, $mgr);
6.通知メールの日本語化
Movable Typeのディレクトリ/plugins/Notifier/tmpl/emailディレクトリに、「comfirmation.tmpl」「confirmation-subject.tmpl」「notification.tmpl」「notification-subject.tmpl」の4つのファイルがあります。
これらをそれぞれ以下のように変えて、アップロードしなおします。
その際には文字コードをMovable Typeのものに合わせてください(通常はutf-8)。
・confirmation.tmpl
'<TMPL_VAR NAME=BLOG_NAME>' で、「コメントへの返信をメールで通知」のチェックがオンにされたので、確認のメッセージをお送りしています。 以下のエントリーで、「コメントへの返信をメールで通知」のチェックがオンにされました。 <TMPL_VAR NAME=RECORD_NAME> コメントへの返信をメールで受信したい場合は、以下のリンクをクリックしてください。 <TMPL_VAR NAME=NOTIFIER_LINK>?c=<TMPL_VAR NAME=RECORD_CIPHER> エントリーの内容を確認する場合は、以下のリンクをクリックしてください。 <TMPL_VAR NAME=RECORD_LINK> もし、「コメントへの返信をメールで通知」のチェックをオンにした覚えがない場合は、このメールは無視してください。
・confirmation-subject.tmpl
[<TMPL_VAR NAME=BLOG_NAME>]「<TMPL_VAR NAME=RECORD_NAME>」<TMPL_IF NAME=NOTIFIER_RUNNING>へのコメントの返事の通知を受け付けました<TMPL_ELSE>へのコメントの返事の通知確認</TMPL_IF>
・notification.tmpl
<TMPL_IF NAME=NOTIFIER_ENTRY><TMPL_IF NAME=ENTRY_EXCERPT>エントリーの概要: </TMPL_IF></TMPL_IF><TMPL_IF NAME=NOTIFIER_COMMENT><TMPL_VAR NAME=COMMENT_BODY></TMPL_IF> <TMPL_IF NAME=NOTIFIER_ENTRY><TMPL_IF NAME=ENTRY_EXCERPT><TMPL_VAR NAME=ENTRY_EXCERPT></TMPL_IF></TMPL_IF><TMPL_IF NAME=NOTIFIER_COMMENT><TMPL_IF NAME=COMMENT_NAME><MT_TRANS phrase="Author:"> <TMPL_VAR NAME=COMMENT_NAME><br /></TMPL_IF><TMPL_IF NAME=COMMENT_URL><MT_TRANS phrase="Website:"> <TMPL_VAR NAME=COMMENT_URL></TMPL_IF></TMPL_IF> エントリーの内容を見る: <TMPL_VAR NAME=ENTRY_LINK> このコメントへの返信の通知を停止する: <TMPL_VAR NAME=NOTIFIER_LINK>?c=<TMPL_VAR NAME=RECORD_CIPHER>&u=1 このサイトからの通知をすべて停止する: <TMPL_VAR NAME=NOTIFIER_LINK>?c=<TMPL_VAR NAME=RECORD_CIPHER>&o=1
・notification-subject.tmpl
[<TMPL_VAR NAME=BLOG_NAME>] <TMPL_IF NAME=NOTIFIER_ENTRY><MT_TRANS phrase="New Entry from"> <TMPL_VAR NAME=ENTRY_AUTHOR>: <TMPL_VAR NAME=ENTRY_TITLE ESCAPE=HTML><TMPL_ELSE>「<TMPL_VAR NAME=ENTRY_TITLE ESCAPE=HTML>」に<TMPL_VAR NAME=COMMENT_AUTHOR>からコメントがありました</TMPL_IF>
7.動作の確認
ここまでの時点で、MT-Notifierが動作する状態になります。
自分でコメントを書き、メールアドレスの欄には自分のメールアドレスを入力して、「このコメントに返信があったらメールで通知する」のチェックをオンにして投稿します。
しばらくすると、MT-Notifierから確認のメールが届きます。
その中に、「コメントへの返信をメールで受信したい場合は、以下のリンクをクリックしてください。」という部分があり、URLが表示されていますので、そのURLのページを開きます。
次に、コメントに返信を書きます。その際、メールアドレスの欄には、最初のコメントは違うメールアドレスを入力します。
このコメントを投稿すると、自分あてに通知メールが送られます。
8.コメントプレビューページでもMT-Notifierを使えるようにする
コメントプレビューページにも、「このコメントに返信があったらメールで通知する」のチェックを入れて、MT-Notifierを動作させることができます。
その方法は、「MT-Notifier 3.2.7をコメント・プレビューページでも使えるようにする」のエントリーを参照してください。
9.問題点
コメントを受信すると、コメント先のエントリーなど、いくつかのページが再構築されます。
ただ、MT-Notifierを入れると、テンプレートの内容によっては、再構築に失敗して500エラーが出ることがあります。
Movable Type 3.2では再構築時のメモリ消費量が増えているようですが、それが関係しているのではないかと思います。
コメントすると毎回500エラーになるようであれば、MT-Nofitierを当面はずしておくしかなさそうです。
ちなみに、当方ではPerl版ダイナミックパブリッシングを活用するなどし、コメントを受信してもテンプレートを一切再構築しないようにして、上記の問題を回避しています。


コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
すごい。速いですね。男は早い方が何でもいい。
やらないつもりでしたが、貴殿の本を眺めてみたらphp化してみたくなり、ついうっかりエラーのドツボにはまってしまいました。それが解決したら早速Notifier3.4.1を開いてみようと思います。とほほ
いつもお世話になっております。
さっそく導入したのですが、
TypeKeyでサインインしていると、
なぜかメールが届かないのですが、
なにか原因等わかりましたら、よろしくお願いいたします。
>PhotoPierreさん
こんにちは。
PHP化では、具体的にどこでエラーが出ているでしょうか?
>showBOOさん
こんにちは。
こちらでテストした限りでは、Typekeyでサインインしていても、確認メール/通知メールともに届きました。
ということで、原因ははっきりしません。
再構築してアクセスすると、500のエラー。
トップのindex.phpを705に直すと表示されますが、各エントリーはリダイレクトが無限ループになっている、、、と一部のブラウザが教えてくれました
取り敢えず、手作業でモトに戻して、Notifierだけ稼働させてみました。こちらはバッチリです。
すみません、こちらのTypeKeyのアカウントの設定に問題があったようです。
メール通知しないようにしていました(^^;)
ご迷惑をおかけしました。
導入完了しましたので、またトラックバックさせて頂きます。
ありがとうございました。
>PhotoPierreさん
こんにちは。
PHPのパーミッションを705にしなければならない場合、mt-config.cgiの中の「# HTMLPerms 777」の行の先頭にある「#」を取れば、MTが再構築時に自動的にパーミッションを設定してくれます。
また、リダイレクトが無限ループになっているのは、.htaccessファイルで、リダイレクト元とリダイレクト先が同じアドレスになってしまっているのが原因と思われます。
アーカイブファイルの拡張子を変える前(htmlの時)にhtaccessファイルを作成して、その後にアーカイブファイルの拡張子がphpになるようにすると良いです。
はじめまして。
MT Notifierの導入についてお聞きしたい事があります。
必要なファイルをすべてアップロードし、管理画面から
Configureを行おうとすると
Can't locate object method "load" via package "MT::PluginData" at extlib/Everitz/Notifier.pm line 1250.
上記のようなエラーメッセージが表示されます。
色々検索したのですがエラーについての情報がみつかりません。
このエラーについてご存知でしたら解決方法など教えて頂けると
大変ありがたく思います。
何卒よろしくお願い申し上げます。
>zirouさん
こんにちは。
MT-Notifierでは、「PluginData」という場所に設定が保存されるようになっていますが、その読み出しに失敗しているようです。
Movable Typeのデータベースの整合性が崩れているのかも知れません。
HTMLPerms 777
これは処置済みなのですが、うまくいかなくてイライラしているうちに忙しくなってきてしまいました。
もちろんアップロードし忘れていませんし、アップロード後に755に変えてあります。mt-config.cgi
それはともかく、Notifierはとても便利ですね!
時々aaa@bbb.comとかテキトーにメアドを入れられてデーモンが持って帰ってきてくれるのが残念ですが
はじめまして、こんばんは。
こちらのカスタマイズテクニックにはwebでも貴著でもお世話になっております。
このたびエラー頻発しながらも
何とかNotifierの設置に成功したのですが、なぜか「情報を保存する」事ができなくなってしまいました。
エントリー画面でも、コメントプレビュー画面でも同様の症状が出てしまいます。
お忙しいところ大変恐縮ですが、お時間のある時にでもヒントなりと頂けると嬉しいのですが…
>クミチョフさん
こんにちは。
「情報を保存する」はMTのJavaScriptが処理している機能ですので、Notifierとは直接には関係がありません。
JavaScriptがどこかおかしくなっているのではないかと思われます。
こんばんは。
早速のご回答ありがとうございます。
頑張ってJavaScriptと関係ありそうなファイルを探してみます。
同じテンプレートを使用していてNotifierを利用していないページではこの現象が見られなかったので、何かが競合しているのかと思った次第でした…
お時間を割いて頂き、ありがとうございました。
初めまして。エラー文などでないので、対処に困っているのですが、テストをしてみても、通知メールがこないのです。
宜しければ、教えてください。
なにか、間違っている所があるのでしょうか・・
>hanakoさん
こんにちは。
日本語化しない状態で、動作テストはされたでしょうか。
ちなみに、私がいろいろテストしていたときにも、メインページとともに再構築されるインデックステンプレートによっては、MT-Notifierが動かなくなることがありました。
>> 壱さん
早速のお返事ありがとうございました!
今、色々していたら動くようになりました。(たぶん・・)
MT-Notifier.cgiはプラグインフォルダのままではだめなのでしょうか・・?mt.cgiと同じ所に置いたのと、以前に入れた、Notifier.plというのを「利用しない」としたら、メールが来ました。
ところで、「チェックをいれた確認」メールが来たとき、
URLをクリックしてもらわないと、その後通知はないのでしょうか?
なんだか、初歩的なことばかりですみません。
URLクリックしてないで、こないなあ・・とおもっていて・・。また、お時間ありましたらお返事宜しくお願いします
>hanakoさん
こんにちは。
まず、フォルダの件ですが、指定どおりのフォルダにアップロードする必要があります。
また、以前のMT-Notifierがあるとバッティングしてしまいますので、以前のものは削除します。
それから、確認メールを送らず、URLクリックなしにすることもできるはずです。
試してはいませんが、MT-Notifierの設定で「Do not Send Any Confirmation Messages」をオンにすれば、確認メールを送らない設定になると思います。
ただ、このようにすると、他人のメールアドレスをかたっていたずらをすることができてしまいますので、なるべくなら確認メールを送るようにしておく方が良いと思います。
>>壱さん
お忙しいところ、お返事ありがとうございました。
なんとか、動作しているようです。今のところは・・・。
なにか起きたら、色々調べて頑張ってみようと思います。
ありがとうございました
いつもWebや貴著ではお世話になっております。
どうしても分からなかったので質問させて頂きます。
実は、MT-Notifierを入れようと思い、ダウンロード先からダウンロードしたのですが、
現行のバージョンは3.4.4になっています。
そのためか、日本語化した後に届くメールのタイトルと本文の頭に「\x{feff}」という文字が入ってしまいます。
日本語化する前は謎の文字列は入っていませんでした。
日本語化は壱さんの手順どおりに行いました。
また、通知確認メールと通知メールの両方で起きている現象です。
ちなみに当たり前ですが、壱さんのブログのコメントで以前に通知をONにしたものは正しい表示で今も送られてきます。
3.4.4と3.4.1の差異が分かれば、と思ったのですが、今はもう3.4.1をダウンロードすることはできないようです。
もし分かりましたら教えて下さいませ。m(._.)m
すみません、先ほどのコメントした件は自己解決致しました。
バイナリモードでconfirmation.tmplを開いてみると、オリジナルは「27 3C」から始まるのが、「27 3C」の前に「EF BB BF」というのが付いていました。原因は分かりませんが、多分、編集に使用したテキストエディタの問題だと思います。(UTF-8にすると勝手に付くようなのでテキストエディタのバグ?MIFESというのを使っていたのですが、Terapadでやっても同じでした。)
通常のテキストモードで見ても余計な文字はないので分かりにくかったのですが、バイナリで余計な部分を削ってアップロードしたところ正常にメールが送られてくるようになりました!
お騒がせしてすみません。
以前はお世話になりました。
また問題を抱えてしまいまして。。。
当方のMT-Notifierを最新バージョンである、
3.4.4に入れ替えたのですが、
システムログで以下のようなものがでています。
「MT -Notifier」は、次の理由で使えません: Can't call method "param" on an undefined value at /home/cgiroot/mt-cgi/plugins/Notifier/Notifier.pl line 335.
これはなにか他のプラグインと競合しているのでしょうか?
MTはver3.31です。
よろしければ教えていただけないでしょうか?
よろしくお願いいたします。
>showBOOさん
こんにちは。
MT3.31には、MT-Notifier3.4.6を組み合わせるようになっているようです。
ちょうどいまMT-Notifierをテストしていたところで、MT3.31+MT-Notifier3.4.6では問題なく動作しました。
了解しまいした。
3.4.6で試してみたいと思います。
ご回答ありがとうございます。
3.4.6にしたら正常になりました。
データベースのアップグレードも必要だったのですね。
はじめまして、こんばんは。

こちらのカスタマイズテクニックには大変お世話になってます。
ご質問なんですが、「メールで通知する」と設定されたメールアドレスを全参照するにはどうしたらよいでしょうか?また、設定解除されたメールアドレスを参照できたりするのでしょうか?
ご多忙かと思いますが宜しくお願いします。
>LINYOWSさん
こんにちは。
phpMyAdmin等のツールが使えるのであれば、「mt_notifier_data」というテーブルを見れば、「メールで通知する」と設定されているメールアドレスを調べることができます。
なお、設定解除されたメールアドレスは、テーブルから削除されるようになっているので、参照することはできません。
さっそくお返事ありがとうございます!
やっぱりそうですよね。試してみます!