Рассылка писем оптом через php и codeigniter - PullRequest
3 голосов
/ 10 июля 2011

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

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

Теперь рассмотрим около тысячи пользователей на сайте, которые ежедневно выполняют от 2000 до 5000 операций по отправке авто-писем.

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

Ответы [ 4 ]

3 голосов
/ 10 июля 2011

Похоже на случай для события / очереди сообщений.

Сгенерированные через Интернет события - регистрация, прямые сообщения подписчикам и т. Д. - добавляют сообщение / задачу / элемент в очередь работ / сообщений.Процесс cron потребляет очередь, фактически выполняя отправку.Обратите внимание, что здесь «сообщение» - это просто объект или запись в БД, содержащая информацию, достаточную для выполнения назначенной задачи: отправка сообщения типа X от отправителя / пользователя Y получателю / пользователю Z и т. Д. В нем даже могут быть поля аудита для текущего состояниякогда элемент был добавлен в очередь, когда он был завершен и т. д. Возможно, очередь очищается от выполненных задач через некоторое время.

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

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

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

Просто мысли вслух ...; -)

1 голос
/ 14 мая 2014

Вы должны сделать 2 шага:

a) Сохраните журнал активности пользователей в базе данных, а затем используйте cron для отправки электронной почты пользователям. Если вы не будете использовать cron, это значительно повлияет на вашу систему.

б) При отправке писем с использованием cron вы должны использовать сторонние почтовые решения, такие как Mandrill или Sendgrid, в противном случае, если вы отправляете слишком много писем, тогда ваши письма могут быть помечены как спам (помните, что обе эти услуги не бесплатны, но вы можете создать версию для разработчиков). проверить работоспособность)

1 голос
/ 11 июля 2011

Я бы добавил все сообщения в базу данных и разрешил cronjob отправлять эти письма каждые X минут.Вы можете отправлять все электронные письма одновременно или отправлять как X сообщения каждые X минут.Чтобы убедиться, что регистрационные электронные письма отправляются первыми, вы можете установить какой-то приоритет.Они получают более высокий приоритет и будут отправлены первыми.

Если вы хотите создать какой-либо форум, я предлагаю вам отправить одно письмо только тогда, когда тема получает новый ответ, пока пользователь не просмотрел ее.Это гарантирует, что у вас будет меньше трафика, и пользователь получит меньше спама.Не уверен, если у вас есть какая-то функциональность, подобная этой, на вашем веб-сайте, но это просто подсказка, если у вас есть что-то подобное.

1 голос
/ 10 июля 2011

Я предлагаю вам использовать сторонние сервисы, такие как postageapp и другие.

Отправка электронных писем - это больно и трудно сделать правильно, особенно при попытке отправить много из них.*

Я предлагаю postageapp , потому что я использовал их сервис, который хорош, и у них есть библиотека CodeIgniter!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...