2011-02-28 1 views
0

私は多くの電子メールレポートを送信するシステムを持っています(1日あたり500件以上の電子メール)。私はスパマーではありません:)それは本当に電子メールの大量ではありませんが、彼らはループで送信され、私は多くの場合、このエラー "PHP警告:mail():メール配信プログラムを実行できませんでした"私はこの問題のPEAR :: Mail_Queueパッケージがあることを知っています。しかし、そのパッケージが本当に有用なものか、それとも他のものを探す必要があるかどうか、私に知らせてください。ありがとうございました大量のメールをループで送信する

答えて

0

あなたはメール間でsleep()を使用する必要があります。これはこれを解決します。

+0

あなたの答えをありがとう。しかし、私は恐怖です、それはスクリプトの実行時間を増加させるでしょうか? – alagar

+1

Heya mate、それはあなたの実行に少し時間を追加しますが、最大実行時間に数えません。だから1日に500回、または5000回もそれは問題ではない。 –

0

SMTPサーバー経由で直接メールを送信する方法もあります。これにより、メールを配信するためにsendmail(または、どのMTAが使用されているか)を "シェルを介して"呼び出すPHPの往復が節約されます。たとえば、Zeta Mail componentを使用すると、特別な拡張子を必要とせずに、SMTPサーバー経由で直接メールを送信できます。

1

それは錫で言う正確に何を意味します...

"PHPの警告:メールは()のメール配信プログラムを実行できませんでした"。 PHPはLinux/Unix/POSIXシステム上の外部プログラム(php.iniのsendmail_pathで定義されている)に電子メールを送ります。そして場合によってはエラーを返す。これはPHPコード内の欠陥ではありません。

本当にひどく構成されたMTAを持っていない限り、代わりにSMTP接続を使用しても問題は解決されません。

MTAのログを調べて、メールを送信できなかった理由、またはログ実行スクリプトでメール実行ファイルをラップする理由を確認する必要があります。

2

PEAR's Mail_Queue packageを使用すると、SMTPサーバー経由で直接メールを送信できます。また、バックグラウンドで動作するため、スクリプトの実行時間が遅くなることもありません。

Mail_Queueパッケージを使用するもう1つの利点は、ロギング目的で送信される各メールのesmtp IDを取得できることです。これがZeta Mailコンポーネントまたは他のコンポーネントで可能かどうかはわかりません。

私は、このコンポーネントを使用し、それに重大な問題を生じていない、多くの一般向けのイントラネットのみのソリューションを開発しました。

関連する問題