Отправка большого количества писем с сайта

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
quasar
Сообщения: 107
Зарегистрирован: 2014.10.22, 09:27

Отправка большого количества писем с сайта

Сообщение quasar » 2019.01.10, 20:12

Всем привет! Подскажите пожалуйста как организовать отправку большого количества писем с сайта? У кого какие практики были? Суть такова, есть сайт где подписная база около 50 тыс. подписчиков. Человек решил перенести сайт на Yii2 и теперь стоит задача при добавлении нового поста уведомлять подписчиков об этом. Сайт на VDS. Если в момент добавления поста я привяжу отправку писем по событию через свифтмейлер на прямую то все повиснет потому как это будет выполнятся очень долго. Через smtp напрямую тоже не вариант - повиснет. Какие идеи есть сейчас:
Первая идея создать очередь рассылки.
В базе создать отдельную таблицу в которую в момент формирования письма положить айди письма и айди юзеров которым отправлять письмо, Таким образом в таблицу ляжет 50К записей. Дальше по крону раз в 10 минут запускать консольный контроллер который будет брать например 1000 писем и рассылать и тем кому отослано их записи удалять с таблицы. На сколько это рабочий вариант не знаю готов выслушать Ваше мнение.

Вторая идея.
Основывается на первом варианте но не запускать консольный контроллер на серваке потому как это притормозит сайт а на другом VDS создать скрипт который будет ходить в базу на текущем VDS где сайт и порциями с таблицы очереди дергать письма и отправлять другим серваком. Как бы проблема вроде решена с нагрузкой но как то разульно это получается - внешний скрипт конектится и работает с таблицей.

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

Собственно вот такие вот вводные данные. Кто как организовывал пожалуйста поделитесь опытом. Просто там человек может за день выпустить 5 статей и 250К писем разослать вообще не представляю как...

kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: Отправка большого количества писем с сайта

Сообщение kawabanga » 2019.01.10, 21:10

Использовать сервисы для рассылки.

quasar
Сообщения: 107
Зарегистрирован: 2014.10.22, 09:27

Re: Отправка большого количества писем с сайта

Сообщение quasar » 2019.01.10, 21:43

kawabanga писал(а):
2019.01.10, 21:10
Использовать сервисы для рассылки.
Сервисы для рассылки имеют тоже лимиты. Надо организовать через отдельный VDS сервак под почту.

quasar
Сообщения: 107
Зарегистрирован: 2014.10.22, 09:27

Re: Отправка большого количества писем с сайта

Сообщение quasar » 2019.01.11, 19:03

Я так понимаю на фреймворке никто не делал уведомления большого количества подписчиков сайта о новых материалах?

kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: Отправка большого количества писем с сайта

Сообщение kawabanga » 2019.01.11, 19:36

Я так понимаю на фреймворке никто не делал уведомления большого количества подписчиков сайта о новых материалах?
Это ведь не задача фреймворка.
Просто там человек может за день выпустить 5 статей и 250К писем разослать вообще не представляю как...
Как? элементарно! В Спам. Кому нужно по 5 емайлов день с сайта? Поэтому вам никто и не советует тут. Для таких целей как раз используют сервисы и платят им деньги за рассылку по своим базам.
Дальше по крону раз в 10 минут запускать консольный контроллер который будет брать например 1000 писем и рассылать и тем кому отослано их записи удалять с таблицы. На сколько это рабочий вариант не знаю готов выслушать Ваше мнение.
А вы попробуйте. Вы тут ответ уже сутки ждете. Замерьте отправку 1К емаил. Подумайте как часто запускать крон и запускайте. Можете даже по 10К за раз. И раз в минуту отправлять.
Можно не удалять записи. А ставит метку что вы отправили письмо. И хранить еще несколько меток, например - когда прочитано, когда человек перешел по ссылке из емаил и тд.

quasar
Сообщения: 107
Зарегистрирован: 2014.10.22, 09:27

Re: Отправка большого количества писем с сайта

Сообщение quasar » 2019.01.11, 20:21

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

kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: Отправка большого количества писем с сайта

Сообщение kawabanga » 2019.01.11, 21:09

И вопрос спама тут не уместен потому как человек добавляя согласие на уведомление по мейлу о новых записях сайта.
Да ладно. Попадет ваш IP сервера в спам базу и все. И вы тут правы, и они там правы.
Сервисы рассылки это хорошо но зачем они нужны если есть свой сервак и возможность прикрутить отправку от своего домена...
Да хотя бы поищите статьи на хабре на этот счет. И комментарии о том, как люди наоборот уходят на сервисы.
Но у него есть консольные контроллеры через которые это можно реализовать от этого и была задача спросить у более опытных.
Можно и через простые контроллеры реализовывать. Я вам еще раз говорю - нет проблемы отправить 250К писем. Есть проблема качественно их доставить и продолжать доставлять.

quasar
Сообщения: 107
Зарегистрирован: 2014.10.22, 09:27

Re: Отправка большого количества писем с сайта

Сообщение quasar » 2019.01.11, 21:35

Я задал вопрос о реализации решения задачи а не о чтении мне морали делать так или не делать. Поэтому не уводите тему в сторону, с Вашей стороны я решения не услышал. Подожду ответа от тех кто реализовывал такие проекты.

Аватара пользователя
ElisDN
Сообщения: 5417
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Отправка большого количества писем с сайта

Сообщение ElisDN » 2019.01.12, 10:13

Так и организовать. На отдельном VDS программируете мэйлер с Json API. На сайте публикуется пост и (сразу или через задачу отправки уведомления в yii2-queue) формируется письмо и со списком адресатов отправляется через API в мэйлер. А он уже принимает письмо и массив адресов, записывает в свою временную базу/очередь и по своему крону или очереди отправляет.

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

Во-первых, вам нужно будет настроить сервер:

https://habr.com/company/mailru/blog/419591/
https://habr.com/post/275047/
https://habr.com/post/114852/

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

В-третьих, самому сделать отслеживание доставляемости и нажатия "Это спам!" получателями. И автоматически следить, чтобы нажатий Спам! получателями было меньше полпроцента.

Если заказчик готов жить в таком режиме, то делайте.

Аватара пользователя
proctoleha
Сообщения: 269
Зарегистрирован: 2016.07.10, 19:00

Re: Отправка большого количества писем с сайта

Сообщение proctoleha » 2019.01.12, 12:51

Правильно люди говорят, что для таких случаев нужен сервис рассылки. Прежде чем, рассылать стописяттысяч писем в день, попробуйте просто настроить отдельный почтовый сервер на отдельном VDS сервере, и чтобы ваши письма ПОДПИСЫВАЛИСЬ цифровой подписью. И только потом думайте как реализовать рассылку с помощью yii2.
И в сторону вас никто не уводит.
Антиспам очень непредсказуемое явление. Попасть в блек лист очень легко.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки

quasar
Сообщения: 107
Зарегистрирован: 2014.10.22, 09:27

Re: Отправка большого количества писем с сайта

Сообщение quasar » 2019.01.12, 22:57

ElisDN писал(а):
2019.01.12, 10:13
Так и организовать. На отдельном VDS программируете мэйлер с Json API. На сайте публикуется пост и (сразу или через задачу отправки уведомления в yii2-queue) формируется письмо и со списком адресатов отправляется через API в мэйлер. А он уже принимает письмо и массив адресов, записывает в свою временную базу/очередь и по своему крону или очереди отправляет.

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

Во-первых, вам нужно будет настроить сервер:

https://habr.com/company/mailru/blog/419591/
https://habr.com/post/275047/
https://habr.com/post/114852/

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

В-третьих, самому сделать отслеживание доставляемости и нажатия "Это спам!" получателями. И автоматически следить, чтобы нажатий Спам! получателями было меньше полпроцента.

Если заказчик готов жить в таком режиме, то делайте.
Спасибо, Дима! Такой ответ я примерно и ожидал меня интересовала техническая сторона планирования этого процесса. А по поводу сервисов рассылки то понятно что их можно использовать, но у заказчика задача именно свой сервер поднять. Получится с этого что то или нет это вопрос уже другой. Главное было узнать на сколько верна моя идея формировать очередь отправки и делегировать эти задачи другому серваку, потому как понятно было что запустить отправку почти на серваке где сайт это убийство сервака.

quasar
Сообщения: 107
Зарегистрирован: 2014.10.22, 09:27

Re: Отправка большого количества писем с сайта

Сообщение quasar » 2019.01.12, 23:02

proctoleha писал(а):
2019.01.12, 12:51
Правильно люди говорят, что для таких случаев нужен сервис рассылки. Прежде чем, рассылать стописяттысяч писем в день, попробуйте просто настроить отдельный почтовый сервер на отдельном VDS сервере, и чтобы ваши письма ПОДПИСЫВАЛИСЬ цифровой подписью. И только потом думайте как реализовать рассылку с помощью yii2.
И в сторону вас никто не уводит.
Антиспам очень непредсказуемое явление. Попасть в блек лист очень легко.
Спасибо за ответ! С вопросами спама я знаком, поэтому человек который пытался рассказать мне о том что надо через сервисы отправлять и что попаду в спам и так далее, это было принято как увод от темы. Я же просто хотел узнать о технической реализации данного процесса. А через что будет отправляться это уже вопрос другой. Задача стоит мгновенно при добавлении поста сформировать задание на рассылку и кому то передать его, потому как на самом серваке отослать такое количество невозможно. Пока заказчик хочет свой свервак подымать для почты. Что с этого выйдет посмотрю.

Аватара пользователя
ElisDN
Сообщения: 5417
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Отправка большого количества писем с сайта

Сообщение ElisDN » 2019.01.12, 23:50

quasar писал(а):
2019.01.12, 22:57
Главное было узнать на сколько верна моя идея формировать очередь отправки и делегировать эти задачи другому серваку, потому как понятно было что запустить отправку почти на серваке где сайт это убийство сервака.
Да, отдельный сервер делать. Если сделаете его самодостаточным в плане установки и работы, то сможете потом для скорости и пять серверов поднять.

Ответить