[PHP-users 25521] Mail_Queueでメール2重送信

shima tetuo mlmlml @ lily.freemail.ne.jp
2005年 5月 6日 (金) 13:59:07 JST


tetuoです。

-------------
環境
-------------
Red Hat 8.0
Apache/1.3.33 
PHP PHP 4.3.10 (cli) (built: Feb  9 2005 18:55:44)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
    with Xdebug v2.0.0beta2, Copyright (c) 2002, 2003, 2004, by Derick Rethans
PostgreSQL 7.4.6

Mail::Queueの設定
$db_options['type']       = 'db';
$db_options['dsn']        = 'pgsql://user:@localhost/testdb';
$db_options['mail_table'] = 'table_mail_queue';

$mail_options['driver']	= 'mail';

-------------
現象
-------------
Pear::Mail_QueueのsendMailsInQueueを実行して、キュー(Queue)内のメール
を送信しようとする際、キュー待ちのメールの中に宛先(To:)として存在しな
いメールデータがあると、同じキュー待ちで実際に宛先が存在し、メール送信が
完了しているものが

mixed Mail_Queue::sendMailsInQueue ([integer $limit = MAILQUEUE_ALL [,
integer $offset = MAILQUEUE_START [, integer $try = MAILQUEUE_TRY]]])

の最後のパラメータである「$try」回数分、重複して送信されます。

※メールの宛先としては送信元、送信先、いずれも同サーバー上のユーザーにし
ています。

期待:
正常なメールアドレス  送信 1回 / 受信出来るメール 1通
存在しないメールアドレス 送信 $try回 / 受信出来るメール 0通

結果
正常なメールアドレス  送信 1 + $try回 / 受信出来るメール 1 + $try通
存在しないメールアドレス 送信 $try回 / 受信出来るメール 0通


-------------
理解している点
-------------
正常に送れたメールに関しては、PostgreSQLのテーブル上にあるデータの消し込
み処理をしているはずですが、どうも Mail_Queue_Container_db::_preload で、
消し込み処理されたはずのメールが読み込まれているようです。

※Mail_Queue::put()のパラメータである「$delete_after_send」はtrue /
false いずれも同様の現象が発生します。


このような現象で解決された方が居ましたら、ご連絡ください。



PHP-users メーリングリストの案内