Как получить доступную квоту текущего сервера для отправки электронных писем с помощью PHP

#php #cron #phpmailer

#php #cron #phpmailer

Вопрос:

я занимаюсь разработкой веб-сайта, которому необходимо отправлять массовые электронные письма своим пользователям. Я создал PHP-скрипт для отправки электронных писем с помощью PHPMailer, и все в порядке, но на сервере установлено ограничение по часам для отправки электронных писем.

Я хочу знать, есть ли какой-либо способ запросить текущую доступную квоту для отправки электронных писем, чтобы я мог выполнить итерацию, используя for / while / etc, и никогда не получать ошибку mail not send (и получать ошибку по электронной почте тоже).

В данный момент я делаю что-то вроде этого:

 While(...)
{
    if(cont < 200)
    {
         $mail = new PHPMailer(true);
         try
         {
             // send email to current user using PHP mailer
             // and update database to not send him another email until next month.
         }
         catch(Exception $e)
         {
             echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
         }
    }
    else
    {
        // Limit reached, dont send more emails.
        break;
    }
    cont  ;
}
  

Но если я отправлю электронные письма через другие скрипты (новые пользователи, уведомления и т.д.), Моя доступная квота будет равна!= из моего лимита сервера, поэтому эти скрипты всегда будут отправлять мне электронное письмо с ошибкой. Я хотел бы сделать что-то вроде этого:

 $limit_quota = getQuota();
while(...)
{
    if(cont<limit_quota)
    {
        // send emails.. (same code)
    }
    else
    {
        // Limit reached, dont send more emails.
        break;
    }
    cont  ;
}
  

Примечание: Я использую CRON для обновления этого php-скрипта каждый месяц.

Комментарии:

1. конечно, вы могли бы сделать это или просто перейти на сервер без ограничений, есть причина ставить себя в такое затруднительное положение.

2. Я был бы очень шокирован, если бы вы могли запросить сервер, чтобы получить текущее состояние квоты. Я бы справился с этим, узнав приблизительную квоту в час и перенаправив всю вашу электронную почту через один скрипт, который использует файл или базу данных для отслеживания количества отправленных писем за последний час и останавливается, когда их становится слишком много. Затем вы могли бы установить квоту ваших скриптов немного ниже, чем, по вашему мнению, квота сервера

3. @tim Да, я знаю причины ограничений, но когда у вас появляется все больше и больше пользователей, 200/300 электронных писем в час не соответствуют потребностям.

4. @Stevish это могло бы быть решением, сделайте мой собственный подсчет в базе данных.. Спасибо за идею!

5. Для этого нет универсального API для запроса. Проконсультируйтесь с вашим хостинг-провайдером и / или интерфейсом управления.