Какие существуют методы для создания большой системы уведомлений по электронной почте?

У моей компании есть сайт, построенный с использованием PHP. Мы используем встроенную функцию электронной почты PHP, чтобы ежедневно отправлять тысячи писем подписчикам.

Это ужасная идея. Он заглушает наш сервер и занимает несколько часов, чтобы завершить всю партию.

Теперь я посмотрел на массовые почтовые службы, такие как MailChimp (что заменило бы нашу текущую систему отправки одного и того же письма многим людям), но я думаю, что мне действительно хотелось бы сделать несколько сложную система уведомлений.

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

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

Итак, мой вопрос очень конкретный: у меня есть общее представление о том, как создать внутреннюю систему, но каков наилучший способ отправить все эти письма?

Нулевые точки:

  • Иногда содержимое электронной почты одинаково для всех получателей, но многие из них будут настроены для каждого пользователя (они выбирают, о чем они уведомляются, а иногда и агрегируются).
  • Я хочу систему, которая не собирается задушить сервер и завершится в приличном количестве времени. Я не против идти с сторонним сервисом (даже платным), если это то, что он собирается принять.
  • Система должна легко подключаться к PHP, или API или что-то еще относительно легко для меня позвонить с вашего типичного веб-сервера.
  • У нас есть выделенный сервер и полный контроль над ним (поэтому мы можем устанавливать приложения, службы и т.д.).
  • Любая подробная информация о отслеживании (открывается, клики и т.д.) является огромным плюсом.
  • Эти электронные письма иногда чувствительны к времени (так что не может быть весь день для отправки).

Мысли? Советы? Направьте меня в правильном направлении?


ИЗМЕНИТЬ

Чтобы уточнить:

Я могу сделать это самостоятельно:

  • сохранить список пользователей
  • обрабатывать создание контента электронной почты на основе пользовательских настроек

И нужно что-то еще (приложение, стороннее обслуживание, w/e), чтобы:

  • принимать содержимое и адреса электронной почты и отправлять электронную почту
  • предоставлять данные отслеживания (открывается, клики и т.д.). Чем детальнее, тем лучше.

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

Ответы

Ответ 1

Я бы рекомендовал использовать стороннюю почтовую службу Silverpop или что-то в этом роде. Мы использовали их в течение нескольких лет и были удовлетворены. У них уже есть отношения с основными почтовыми клиентами (AOL, Yahoo!, Gmail и т.д.), И они хорошо говорят вам, если отправляемый материал скорее всего будет классифицирован как СПАМ.

У них довольно обширный API, который использует запросы HTTP HTTP/HTTPS, которые могут привязываться к существующим системам. Вы можете использовать его для удаленного запуска электронной почты, расписания рассылки, настройки содержимого электронной почты, настройки, управления и запроса огромных списков получателей, запуска пакетных процессов и т.д.

Это не идеальный сервис, но по сравнению с множеством других, они очень хорошо справляются. До сих пор у меня было очень мало жалоб.

Ответ 2

Мы используем встроенную функцию электронной почты PHP, чтобы ежедневно отправлять тысячи писем подписчикам.

Это ужасная идея. Он заглушает наш сервер и занимает несколько часов, чтобы завершить всю партию.

Почему вы думаете, что ваши проблемы связаны со встроенной функцией электронной почты PHP? Это очень тонкая оболочка вокруг "почты" или простого клиента SMTP в зависимости от того, на какой платформе вы работаете.

Когда вы говорите, что это задыхается от вашего сервера - вы имеете в виду ваш почтовый сервер? Ваш веб-сервер? что-то еще?

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

Можете ли вы сказать нам:

  • какая ОС работает на

  • как вы вызываете код для создания писем

  • какая почтовая конфигурация в файле php.ini

  • какой тип MTA вы используете? На какой ОС?

  • Как вы работаете с MTA, передается ли он напрямую или через интеллектуальное реле?

  • какой сервер "задыхается"?

  • Какие меры защиты от нежелательной почты у вас есть для исходящей почты?

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

С.

Ответ 3

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

Ответ 4

Используйте Google AppEngine, если вы обеспокоены масштабируемостью и настройкой: он предоставляет API-адрес электронной почты, и вы можете связать что-либо с ним, если оно осуществляется через интерфейс HTTP.

Конечно, это всего лишь предложение - пренебрежение, если это не подходит.

Ответ 5

Почему бы не сохранить свою систему PHP и использовать стороннюю SMTP-службу? Некоторые надежные компании предлагают использование машин с электронной почтой по разумным ценам, например. Dewahost, который я планирую использовать.

Также см. вопрос Сторонние отправители электронной почты и мой ответ там.

Ответ 6

Совсем не идеальный, но если вы смотрите на крупномасштабную передачу, есть коммерческие решения, такие как Port 25 PowerMTA, которые могут быть настроенный для эффективной передачи содержимого данной папки.

Таким образом, вы просто используете PHP для создания персонализированных исходных данных в формате MIME для каждого исходящего письма и размещаете их во временном каталоге до передачи. (Я написал такую ​​систему в прошлом, и вы будете удивлены тем, что PHP сможет измельчать электронные письма, даже с довольно сложными текстовыми и HTML-сообщениями с изображениями в виде встроенных вложений и т.д.). Когда вы были готовы передайте, вы затем переместите файлы в маске в папку, контролируемую PowerMTA, и она позаботится о передаче.

В зависимости от того, как вы смотрите на это, проблема/проблема с таким решением заключается в том, что вам нужно будет установить доверительные отношения с такими людьми, как AOL, MSN/Hotmail и т.д., чтобы гарантировать, что ваш почтовый сервер не включен в черный список из-за сообщения пользователя, отправляющего сообщения по электронной почте как СПАМ. (Тем не менее, это, вероятно, будет фактором с любым решением DIY.)

Ответ 8

Один из моих друзей использует http://www.tailoredmail.com, но я его лично не использовал

Ответ 9

Я знаю, что это более старый вопрос, но я просто хотел предложить SendGrid, который по сути является "электронной почтой Server as a Service", позволяющий отправлять электронную почту со стоимостью по электронной почте.