0

専用IPをオーバーロードせずに1つのphpスクリプトリクエストから約3000以上のメールを送信できる方法はありますか...最大は1時間あたり500になりますか?

あなたが私を取得しない場合..ここに詳細があります:)

PHPのmail()関数を介して専用IPを介して1時間に500通のメールしか送信できません。たとえば、メールアドレスから取得した3000行のメールを送信する方法はありますが、mail()関数をずらして送信することができます。 1時間あたり500...

すでにありがとう!

4

5 に答える 5

2

2つのテーブルを作成します。1つは電子メールメッセージ用で、もう1つは受信者のリスト用です。次に、cronによって実行されるスクリプトを作成します。このスクリプトは、メッセージテーブルに新しいメッセージがあるかどうかを確認し、ある場合は、次の受信者のセットに電子メールのバッチを送信します。メール送信後に各受信者にマークを付けます。

次に、クライアントがメッセージを作成し、ユーザーがメッセージを準備完了としてマークしたら、受信者をメッセージに添付するためのWebインターフェイスを作成します。これにより、cronジョブがメッセージを取得して処理します。

送信するメッセージがない場合、cronジョブは何もしません。

于 2009-08-25T22:49:37.310 に答える
1

呼び出しの合間にスリープするか、すでにデータベースにある場合は、呼び出しがいつ送信されたかを示すフィールドをそこに配置します。次に、送信されていないものを選択し、そこから開始します。

于 2009-08-25T19:46:17.180 に答える
1

DBにフィールドを配置して、最後の電子メールが各ユーザーにいつ送信されたか、およびそれがどの電子メールであったかを示します。また、送信した各電子メールと、それがまだすべてのユーザーに送信されているかどうかを示す別のDBテーブルがあります。

User Table:
Id, UserName, Email, etc, DateTimeOfLastEmail, LastEmailId

Email Table:
Id, EmailSubject, EmailContent, DateTimeSent, SentToAll(True/False), DateTimeOfFinish
于 2009-08-25T19:52:45.233 に答える
1

すべての答えをありがとう!私が見つけた最善の方法は、実際には、400通のメールをテストしたときにsleep()を使用して呼び出しの間にsleep()を実行することでした。これには、17秒かかりました:)

ユーザーが450を超える制限を送信する可能性は低いですが、もしそうなら、while()が450を超える行があるかどうかのチェックを終了する前に、ifステートメントがあります。そうであれば、それぞれの間にスリープします...これ面倒なデータベースなしで動作します:)

ありがとう!

于 2009-08-28T09:25:03.973 に答える
0

いくつかの計算を行った後、8.3秒(498 / hr)ごとに電子メールを送信できますが、問題は解決しません。別のアプローチは、DBを使用し、500をクエリして、CRONジョブに1時間ごとにスクリプトを実行させることだと思います。

したがって、DBテーブルでは、電子メールの送信後にスクリプトでフィールドを更新して、次のcronジョブがクエリを実行し、送信する必要のある次の500の電子メールを取得することができます。

于 2009-08-25T19:58:53.567 に答える