2012-03-30 11 views
0

私たちは現在、動作しているphpメールスクリプトを持っています。しかし今日、IPアドレスがブラックリストに登録されているのを避けるために、サーバはPHP経由で毎分約15通の電子メールしか提供しないという予期せぬ問題に遭遇しました。PHPの確認メール、サーバーの電子メールの制限を受け入れる

私たちはこれを回避しようとしていません。この制限を超えないことを保証する方法が必要です。ですから、私の質問は、最後の60秒間に送信された電子メールの数に基づいて、何らかの遅延を設定するためにどのような方法を使用できるかです。

(そのdb_queryに注意してください)SQLを実行するための正しいが、専門的な機能は、ここで

に照会され、当社のメールスクリプト(簡体字)である:

$user_verification_key = md5(rand(1000, 100000000000)); 
db_query("insert into user_t values('" . $user . "', '" . $userinfo['first_name'] . "', '" . $fb_userinfo['last_name'] . "', '" . $userinfo['username'] . "', '" . $_POST['user_country'] . "', '" . $_POST['regions'] . "', '" . $_POST['paypal'] . "', '" .  $user_verification_key . "', 0)"); 
$msg = "Thankyou for signing up:\n\n 
     Click the link to verify your account: http://website.com/verify.php?user=" . $fb_userinfo['id'] . "&verify=" . $user_verification_key . " 
     "; 

mail($_POST['paypal'], 'Account verfication', $msg, 'From: ' . '[email protected]'); 
    header("location: index.php?page=home&msg=Congratulations, your account has been setup please verify your email address");   
+0

JangoMail.comの認証されたSMTPリレーを考えてみてください。これにより、優れた配信性とこれらの制限を取り除くことができます。 – gahooa

答えて

2

一つの簡単な方法は、すべての未処理の電子を蓄積することであろう-mailsをMySQLデータベースに格納し、cronjobを使用して間隔を置いて徐々にそれらを通過させます(10〜15分ごと)。このようにして、ホスティング条件に違反しないようにします。

cPanelを使用している場合は、クローンジョブを設定してPHPスクリプトにリンクできるため、これは非常に簡単です。あなたのスクリプトはDBに接続し、未処理の電子メール(ステータスが0のメール)にすべてアクセスして送信するだけです。あなたがそれらをループするとき、彼らの状態を1に変更してください。

もしあなたがそれらにあまり慣れていないなら、cronjobs hereについてもっと知ることができます。

+0

+1、パンチに私を打つ! APCやその他の共有メモリソリューション –

+0

これは最高の解決策のようです。とても有難い。 –

1

最も簡単な方法は、すべての送信メールをデータベースに保存してから、1(または2分、安全であること)ごとに実行されるcronを使用して、最大15個のメールを送信することです。

関連する問題