#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 для запроса. Проконсультируйтесь с вашим хостинг-провайдером и / или интерфейсом управления.