Рассылка поздравлений с днями рождений
Подскажите существуют ли компоненты для рассылки поздравлений с днём рождения пользователям, которые берут дату из профиля в modx? Пытаюсь найти и нашла только birthReminder, но это скорее личный календарь для оповещения. Не может же быть, что за столько лет не появилось такого функционала? Может кто видел подходящие решения?
Техническая поддержка MODX
Сайт лежит, тормозит или остался без разработчика?
Переезд с MODX 2 на 3, PHP 7 на 8, скорость и безопасность. Поддержка со сроками и ответственностью, а не совет в чате.
Подробнее
Реклама
Комментарии: 19
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Поставьте CronManager и запускайте каждое утро.
Дни рождения хранятся в формате Unix Timestamp и как в этом случае сравнивать ещё придумать надо.
Просто так слать письмо не получиться, вдруг сегодня 100 именинников, значит надо организовывать очередь рассылки. И скорее всего ещё что-нибудь выплывет. Поэтому искала готовое решение, думала, что существует что-то.
2) Для отправки очереди писем, чтобы хостинг не подумал, что через него спам рассылают можно подключить API какого-нибудь сервиса рассылок, типа Unisender. Там письма довольно легко отправлять.
Вызывать через cron.
Можно пару уточнений? Здесь очередь рассылки никак не учитывается? То есть если будет 100 пользователей с ДР, то сразу отправится 100 писем? Cron надо запускать раз в сутки если не ошибаюсь? (иначе будет рассылать повторно?)
Кстати, именно для рассылки наткнулась на очень интересное приложение goodnews, может кому пригодится.
Шаг 1. Отдельным скриптом сохранять письма в кэш.
В папке core/cache/queue появится файл birthdays.cache.php с массивом писем. У метода save() есть второй параметр, который отвечает за режим работы: true — пересоздать файл, false — дописать данные. По умолчанию, false. Т.е. очередь дописывается.
Шаг 2. Другим скриптом зачитывайте кэш, например, раз 10 минут в течение часа.
Бейте массив на 2 части. По первой части работаете (функция email), а вторую опять сохраняете в кэш.
Так и должно быть, что при 2м проходе в array указано два email? Если так и должно быть поищу хостинг где можно сделать копию с рабочей функцией mail.
П.С. Я бы ещё посоветовал ограничить список полей через select(). Не зачем ненужные поля выводить.
Я так понимаю, надо добавить строку , но как выбрать сразу несколько полей так будет работать?
Добавил пример в описание метода select.
А попробовать?
например в сниппете
последней операцией будет и дальше ничего происходить не будет. Ошибок в журналах тоже нет. (Если убрать любые пару строк про группы, например то весь сниппет отработает.
(то есть работают любые 2 операции после where и всё )
Это так и должно быть или я что-то не так делаю?
Такой сниппет работает
а такой выполняет только две операции и отваливается