0

たくさんのメールレポート(1日あたり約500通以上のメール)を送信するシステムがあります。私はスパマーではありません:)大量の電子メールではありませんが、ループで送信されるため、「PHP警告:mail():メール配信プログラムを実行できませんでした」というエラーが頻繁に発生します。この問題にはPEAR::Mail_Queueパッケージがあることを知っています。しかし、そのパッケージが本当に便利なものかどうか、または何か他のものを探す必要があるかどうかを教えてください。どうもありがとう

4

4 に答える 4

2

PEAR の Mail_Queue パッケージを使用して、SMTP サーバーを介して直接メールを送信できます。また、バックグラウンドで動作するため、スクリプトの実行時間が遅延したり増加したりすることはありません。

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

私は、このコンポーネントを使用する一般向けの、またイントラネット専用のソリューションを多数開発しましたが、大きな問題はありませんでした。

于 2011-03-01T10:32:10.287 に答える
1

「PHP警告:mail():メール配信プログラムを実行できませんでした」

...缶に書かれていることを正確に意味します。PHPは、Linux / Unix / POSIXシステム(php.iniのsendmail_pathで定義されている)の外部プログラムに電子メールを渡すだけです。また、エラーが返される場合もあります。これはPHPコード内の障害ではありません。

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

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

于 2011-02-28T13:27:20.677 に答える
0

別の方法として、SMTPサーバーを介して直接メールを送信することもできます。これにより、メールを配信するために「シェルを介して」sendmail(または使用されているMTA)を呼び出すPHPのラウンドトリップを節約できます。たとえば、ゼータメールコンポーネントを使用すると、特別な拡張子を必要とせずに、SMTPサーバーを介して直接メールを送信できます。

于 2011-02-28T13:27:10.053 に答える
0

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

于 2011-02-28T13:11:14.430 に答える