0

私は534の登録された電子メール(ニュースレター)を備えた小さなデータベースを持っています。

データベースからすべての電子メールアドレスに電子メールを送信する方法を知っていますが、問題はページがホストされている場所の制限にあります。私は1時間あたり200通の電子メールに制限されており、すべてのアドレスに送信することを強制すると、禁止される可能性があります。

最初はループ(for()とforeach())で送信していましたが、SMTPでメッセージを送信するよりもすべての電子メールを選択していました。

昨日通知をチェックしていて、ウェブホスティング会社からの警告ウィンドウが表示されました。1時間以内に500通以上の電子メールを送信しようとしたため、禁止される可能性があります。

私は何をすべきか?

4

5 に答える 5

1

mail()を使用している場合(コードなしではわかりません)、php.netからこれを読んでください...

ノート:

mail()関数は、ループ内の大量の電子メールには適していないことに注意してください。この関数は、各電子メールのSMTPソケットを開閉しますが、これはあまり効率的ではありません。

大量の電子メールの送信については、»PEAR::Mailおよび»PEAR::Mail_Queueパッケージを参照してください。

私の本では梨は面白くない。私はこの投稿がSwiftMailerのようなものに行くことに同意する傾向があります

于 2012-10-16T07:27:58.550 に答える
1

このように、1 回の呼び出しで複数のメールを送信できます

CC = "emailaddress1@xxxx.com; emailaddress2@xxxxx.com". BCC = "Firstemailaddress; secondemailaddress"

しかし、それにも限界があります。

于 2012-10-16T07:31:14.830 に答える
1

スクリプトを毎時間実行し、selectステートメントでlimit値を範囲内で機能するように変更できます。これらの値をDBに保存し、完了したら0に戻すか、作成してからリセットする単純なファイルに戻すこともできますすべての電子メールが循環した後。

于 2012-10-16T07:31:24.037 に答える
1

次の手順が役立ちます。

  1. 最初に、メールがその特定の顧客に送信されているかどうかに関係なく、ステータス フラグとして表に参照を追加します。これにはブール値を使用できます。
  2. 電子メールが送信されていない 200 個の電子メール アドレスを取得する必要がある 200 ループに対してのみ実行する電子メール送信スクリプトを記述します。(フラグが送信されない場合)
  3. ループ内で、各ユーザーに電子メールを送信しながら、データベースでフラグを send として更新します。

上記のスクリプトを実行したら、1 時間ごとに実行できる cronjob を設定し、その中で php スクリプトを呼び出すだけです。

お役に立てれば。

于 2012-10-16T07:35:07.813 に答える
0

Web アプリケーションには外部の電子メール システムを使用しています。私は個人的にSendGridをお勧めします。これはスケーリングを処理し、非常に有用な分析を提供します (不正なアドレスを追跡するのに非常に便利です)。

于 2012-10-19T02:08:24.833 に答える