Массовая рассылка php
У меня есть небольшая база данных с 534 зарегистрированными электронными письмами (информационный бюллетень).
Я знаю, как отправлять электронную почту на все адреса электронной почты из моей базы данных, но проблема заключается в ограничении места размещения страницы. Я ограничен 200 электронными письмами в час, и если я заставлю отправлять на все адреса, меня могут забанить.
Сначала я отправлял с помощью цикла ( for() и foreach()), я выбирал все электронные письма, а затем отправлял сообщение с помощью smtp.
Вчера я проверял свои уведомления и увидел окно предупреждения от компании веб-хостинга. Меня могут забанить, потому что я пытался отправить более 500 электронных писем менее чем за 1 час!
Что я должен делать?
5 ответов
Следующие шаги помогут.
- Сначала добавьте ссылку в таблицу в качестве флага состояния независимо от того, отправлено ли электронное письмо данному конкретному клиенту или нет. Вы можете использовать логическое значение для этого.
- Напишите скрипт отправки электронной почты, который будет работать только для цикла 200, где вы должны получить 200 адресов электронной почты, которые не были отправлены. (куда флаг не отправляют)
- Внутри цикла при отправке электронной почты каждому пользователю обновите его флаг как отправленный в базе данных.
После того, как вы выполнили вышеуказанный скрипт, все, что вам нужно сделать, это установить cronjob, который может выполняться каждый час, и вызывать внутри себя ваш php-скрипт.
надеюсь это поможет.
Вы можете запускать скрипт каждый час и в своем select
заявление изменить limit
значения для работы в пределах вашего диапазона, и вы можете сохранить эти значения в БД и установить его обратно на 0, когда это будет сделано, или даже в простом файле, который создается и затем сбрасывается после того, как все электронные письма были зациклены.
Если вы используете mail() (я не могу сказать без кода), то прочитайте это с php.net...
Замечания:
Стоит отметить, что функция mail () не подходит для больших объемов электронной почты в цикле. Эта функция открывает и закрывает сокет SMTP для каждого электронного письма, что не очень эффективно.
Для отправки большого количества сообщений электронной почты см. Пакеты "PEAR::Mail и" PEAR::Mail_Queue.
Груша не веселая в моей книге. Я склонен согласиться с этим постом пойти с чем-то вроде SwiftMailer
Вы можете отправить несколько электронных писем за один звонок, как это
CC = "emailaddress1@xxxx.com; emailaddress2@xxxxx.com"
, BCC = "Firstemailaddress; secondemailaddress"
Но у этого есть и предел.
Мы используем внешнюю систему электронной почты для наших веб-приложений. Я лично рекомендую SendGrid, он обрабатывает масштабирование и предоставляет довольно полезную аналитику (очень удобно для отслеживания неверных адресов).