Массовая рассылка php

У меня есть небольшая база данных с 534 зарегистрированными электронными письмами (информационный бюллетень).

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

Сначала я отправлял с помощью цикла ( for() и foreach()), я выбирал все электронные письма, а затем отправлял сообщение с помощью smtp.

Вчера я проверял свои уведомления и увидел окно предупреждения от компании веб-хостинга. Меня могут забанить, потому что я пытался отправить более 500 электронных писем менее чем за 1 час!

Что я должен делать?

5 ответов

Решение

Следующие шаги помогут.

  1. Сначала добавьте ссылку в таблицу в качестве флага состояния независимо от того, отправлено ли электронное письмо данному конкретному клиенту или нет. Вы можете использовать логическое значение для этого.
  2. Напишите скрипт отправки электронной почты, который будет работать только для цикла 200, где вы должны получить 200 адресов электронной почты, которые не были отправлены. (куда флаг не отправляют)
  3. Внутри цикла при отправке электронной почты каждому пользователю обновите его флаг как отправленный в базе данных.

После того, как вы выполнили вышеуказанный скрипт, все, что вам нужно сделать, это установить 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, он обрабатывает масштабирование и предоставляет довольно полезную аналитику (очень удобно для отслеживания неверных адресов).

Другие вопросы по тегам