**[[続・質問箱/651]] [#p72d4698]
#author("2018-03-11T15:01:53+09:00;2009-05-06T15:19:36+09:00","","")
**[[質問箱/2651]] [#p72d4698]
|RIGHT:70|LEFT:410|c
|~カテゴリ||
|~サマリ|更新メールを一括して送る|
|~バージョン|1.4.5|
|~投稿者|[[katzumi]]|
|~状態|保留|
|~投稿日|&new{2005-03-08 (火) 17:44:42};|
***質問 [#rcfe2c25]
ページの更新時にメールを送信する機能がありますが、一回の編集に対して必ず一通のメールが送信されます。~
これだとたくさんの書き込みがあった場合、メールが何十通も届いてしまいます。特に同一ページへの複数の書き込みは同じタイトルのメールが並ぶことになります。~
そこで質問ですが、この更新メールを一定時間ごとにまとめて送るようにすることは出来ますでしょうか?~
またそのようなことが実現できるpluginやパッチ等がありますでしょうか?~
宜しくお願いします。

***回答 [#vd501fdd]
-''一定時間ごとを保証する''ことは、PukiWiki単独では不可能でしょう。ある程度の人気サイトなら、それに近いことは可能でしょうが。 --  &new{2005-03-08 (火) 20:55:47};
--ということで、簡単なまとめ送りパッチ つ &ref(notify_digest.diff.gz); --  &new{2005-03-08 (火) 22:22:15};
--なるほど、バックアップと同じ仕組みですね。頻繁に書き込みがあるところであれば、これで問題ないかもしれませんね。 -- [[teanan]] &new{2005-03-09 (水) 01:47:07};
-ありがとうございます。なかなかいい感じです。ただやはり''一定時間ごと''というのは難しいでしょうか?あれからいろいろ調べて[[簡易リマインダー機能プラグイン>自作プラグイン/remind.inc.php]]をうまく組合わせられればいいのにと思っているのですが。。 -- [[katzumi]] &new{2005-03-10 (木) 20:19:43};
-PukiWikiは、誰かに閲覧された時しか動きません。従って、単独で一定時間毎を''保証する''のは原理的に不可能なのです。当然ですが、remind.inc.phpもその点では同じことです。 --  &new{2005-03-10 (木) 20:59:43};
--次のものをスキンにでも仕込んで呼び出せば、notify_digestを多少は定期動作に近づけることが出来るでしょう。 
 function notify_digest_flush()
 {
         global $notify, $notify_diff_only, $notify_digest, $notify_to, $notify_subject, $notify_header;
         global $smtp_server, $smtp_auth;
 
         if ( PKWK_READONLY || !$notify_digest ) return; // Do nothing
 
          $file = CACHE_DIR.'notify_log.txt';
         if ( !($mt = @filemtime( $file))) return;
 
         if ( ( $mt + $notify_digest) < time()) {
                 $str = implode('',file( $file));
                 unlink( $file);
                 $subject = str_replace('$page', '[Digest]', $notify_subject);
                            
                 ini_set('SMTP', $smtp_server);
                 mb_language(LANG);
                 if ($smtp_auth) pop_before_smtp();
                 mb_send_mail($notify_to, $subject, $str, $notify_header);
         }
 }
通常の閲覧でも必ず実行させるため、僅かかもしれませんが重くなることはお忘れ無きよう。~
これで不満なら、もうPukiWikiでの限界を越えていると思います。どこからかcronするか、notifyメールを
それなりの機能を持ったもの(MLとか)にでも投げるようにするしかないでしょうね。--  &new{2005-03-10 (木) 21:13:42};
- 関連?: [[欲しいプラグイン/77]] メール通知を周期指定できるプラグイン --  &new{2007-09-23 (日) 15:59:42};

- 1.4.7で更新メールを一括して送るためには、どのファイルを変更すればよいのでしょうか。file.phpとmail.phpのどちらに手をつけたらよいのか分からず、困っています。 -- [[rim]] &new{2008-12-04 (木) 15:09:33};
-- ついでに付け加えてしまうと、理想としては一日分の更新ページリスト(「タイムスタンプを変更しない」にチェックを付けた編集も含めて)をメールで通知するような仕組みが欲しいと思っています。厳密に周期を設定する必要はないのですが、RSSやRecentChengesを使用せず(タイムスタンプに頼らず)、管理者のみに更新ページを一括して通知する仕組みはありませんでしょうか。 -- [[rim]] &new{2008-12-04 (木) 15:13:15};
- lib/mail.php はメールを送信する機能をまとめてあるだけのファイルなので、こちらを変更してもメールを送ることはできません。pkwk_mail_notify 関数をメールを送信したい場面で呼び出す必要があります。&br;1.4.7 のデフォルトでは、file_write 関数内でDIFF_DIR ディレクトリのデータ(差分ファイル)が更新されるたびに、メールを送信するような作りになっています。 --  &new{2009-05-06 (水) 15:19:36};
-- 新たにキャッシュファイルでも用意しないと、「タイムスタンプを変更しない」にチェックを付けた編集も含めて後で通知するのは無理です。(それ以外だけなら、ファイルの更新日時を確認する事で一応は可能ですが・・・)&br;また、上にも書かれていますが、PukiWiki 単独では定期動作はできません。このため、「一定時間経過後に、前回メールを送ってからの変更を送信する仕組み」をPukiWiki だけで実現させると、更新の間が空いた場合には複数日分(正確には1日目の分と、間が開いた後の1回目の更新)の更新リストになってしまう可能性があります。これを嫌うのなら、上ですでに書かれているように、外部のプログラムを併用するしか手段がありません。 --  &new{2009-05-06 (水) 15:19:36};

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.074 sec.

SourceForge