Эта тема на forum.dklab.ru


СерЖ: Организация массовой рассылки
Суть проблемы:

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

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

Вопрос - как грамотно организовать отсылку? Напрашивается вариант - php mail() в этом же цикле, однакао данная функция закрыта хостером. Для отправки сообщений используется SMTP. Даже если отбросить медленность рассылки через SMTP (можно запустить процесс в кроне), больше всего волнует вопрос бана данного IP адреса. С данного IP уже отсылаются различные важные уведомления такие как подтверждение регистрации, подтверждение заказа и т.д. Очень не хочется рисковать и попасть в черный список...

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

Видел несколько тем по рассылке, но развернутого ответа так и не нашел.. Буду рад услышать различные мнения по организации рассылки.
dimagolov:
Рекомендую в очередной раз менеджер рассылки, например mailman. Не далее как вчера с его помощью было разослано сообщение весом в 190К на 18 тыс. адресов. Ушло за пару часов (почтовик exim) и без особого влияния на LA сервера. Менеджер рассылки вставляет все нужные заголовки и предоставляет интерфейс для отписки от рассылки, благодаря чему почта не может быть признана спамом согласно федеральному закону.

Конкретно mailman это приложение на python, которое пускается демоном и прописывается фильтром в почтовики, чтобы обрабатывать входящие сообщения на свои адреса.

Да, чтобы делать рассылку с веб сайта, то надо на сервер, где живет mailman послать одно почтовое сообщение, которое будет разослано всем получателям рассылки. Так что рассылка может жить на одном сервере (там должен быть только почтовик правильно настроенный, который бы являлся MX для Вашего домена, то есть на статическом IP), а сайт на другом.
СерЖ:
Обязательно ознакомлюсь с документацией.

Вопрос: как быть с динамической рассылкой? Я так понимаю, что при использовании менеджера обычно имеется список подписчиков и тело письма для всех. В моём случае список получателей всегда разный для каждого типа рассылки (к примеру если юзер логинился в магазин вчера, то он получит обновления за 2 недели с момента последнего логина) + в письме есть как статичная часть для всех, так и динамическая для каждого юзера. Выходит что письмо уникально для каждого подписчика..
dimagolov:
СерЖ, рассылку индивидуальных писем можно без проблем делать и из php. До определенных пределов конечно. Но не думаю, что юзеров, которые не логинились более двух недель будет так уж много (если отправлять одно напоминание по крону каждый день для тех, кто не логинился ровно две недели).
СерЖ:
В общем дело обстоит так:

Есть база клиентов - 1500 человек. Рссылку им мы еще не проводили. Скрипт построен таким образом - если этому получателю емайл рассылка не проводилась (в нашем случае все 1500 человек) то отсылаем рассылку обновлений дефолтного типа ( раз в 2 недели ). Так же существуют рассылки После каждого обновления и Раз в месяц. Теоретически после первой рассылки юзеры выберут удрбный для себя вариант через ссылку в письме ( в каждом письме можно изменить тип рассылки либо полностью отписаться).

В дальнейшем скрипт смотрит на новых юзеров и тех, кому рассылка уже осуществлялась.

Т.е. крон производит следующие стадии:

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

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

+ имеется проблема битых емейлов, так как ранее проверка валидноси емейлов не проводилось, поэтому в базе найдутся несуществующие емейлы. Для этих целей я думал для начала отыслать скажем 1500/14 = 108 емейлов в день, а затем вручную смотреть, какие из емейлов битые и выбрасывать их из списка. Хотя опять же ручной вариант кажется мне лобовым..

Вот в такой ситуации я сейчас нахожусь... Вроде как 1500 человек не такая уж большая база - но ее вполне достаточно чтобы заблеклистить свой IP.

+ База вероятно увеличится, поэтому приходится продумывать пути динамической рассылки...

dimagolov

Вам спасибо за участие!
dimagolov:
Тут самое главное, чтобы одно и то же письмо не могло отправиться дважды. С этим основные проблемы возникают при php рассылках, например, когда есть универсальный диспечер отправок на php который берет из базы кому и что надо отправить и посылает. Если этот скрипт накрывается медным тазом после отправки письма, а запись из базы не удалена, то получим дубль. Поэтому надо продумывать так, чтобы такого случиться не могло. Так как это рекламная рассылка, то я бы исходил из того, что лучше что-то не послать, чем послать дважды. Также придется сделать интерфейс, через которую юзер мог бы заблокировать отправку этих писем и ссылку на данный интерфейс включать в письма, чтобы не зачислили в спамеры.

Про битые адреса. Тут все просто. Отправляем от имени site-news-bounce@mysite.by, site-news-bounce вешаем алиасом на свой ящик и читаем bounce. Mailman большинство таковых обрабатывает автоматом. Чтобы проверить адреса на битость Mailman позволяет посылать уведомление при подписке нового подписчика, так что при получения bounce подписчик или удаляется автоматом (если bounce оказался читабельным) или админ рассылки получает непонятные bounce и убивает подписчика. Очевидно, что без Mailman всем этим придется заниматься вручную.
Ivan1986:
И это массовые рассылки?
Блин, у нас сервак колбасит по 300-400 тысяч уникальных писем раза по 4 в сутки. (пики загрузки mysql очень хорошо видны)
Отправляется все кроне, ну у нас правда функция mail, но для ваших объемов и SMTP тоже будет вполне нормально.
Если у вас динамические письма, то список рассылки к сожалению не подойдет, но с вашими объемами сервер справится влегкую в кроне.
А если уж нас не забанили, то и вас не забанят, а если забанят, то можно и связаться с теми кто забанил.

Эта тема на forum.dklab.ru