Письмо с подтверждением PHP, с учетом ограничений электронной почты сервера - PullRequest
0 голосов
/ 30 марта 2012

В настоящее время у нас есть работающий почтовый скрипт php, он работает нормально и, как мы и ожидали.Но сегодня мы столкнулись с непредвиденной проблемой, заключающейся в том, что серверы предлагают только около 15 электронных писем в минуту через PHP, чтобы избежать внесения их IP-адреса в черный список в качестве массовой рассылки.

Мы не пытаемся обойти это.Мы хотим, чтобы этот предел не был превышен.Поэтому мой вопрос заключается в том, какие методы я могу использовать для установки какого-либо типа задержки в зависимости от того, сколько писем было отправлено за последние 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: ' . 'no_reply@bartermate.com.au');
    header("location: index.php?page=home&msg=Congratulations, your account has been setup please verify your email address");        

Ответы [ 2 ]

2 голосов
/ 30 марта 2012

Одним простым способом было бы хранить все необработанные электронные письма в базе данных MySQL и использовать cronjob, чтобы постепенно просматривать их с интервалами (скажем, каждые 10-15 минут).Таким образом, вы не нарушаете свои условия хостинга.

Если вы используете cPanel , это невероятно просто, потому что вы можете настроить cronjob и связать его с вашим PHP-скриптом.Все, что вам нужно сделать, это подключиться к вашей БД, получить доступ ко всем необработанным сообщениям электронной почты (т. Е. Со статусом 0) и отправить их.Проходя через них, измените их статус на 1.

Если вы с ними не слишком знакомы, узнайте больше о cronjobs здесь .

1 голос
/ 30 марта 2012

Самый простой способ, который я могу придумать, - это сохранить все исходящие электронные письма в базе данных, а затем использовать cron, который запускается каждые 1 (или 2 минуты, чтобы быть в безопасности) и отправлять до 15 ожидающих писем.

...