Автоматизируйте пакетную отправку писем для разных аудиторий с помощью Rake или Active Job - PullRequest
0 голосов
/ 26 января 2019

У меня есть 3 набора аудитории (70 человек на аудиторию), которым нужны индивидуальные электронные письма, отправленные им в определенное время.Каждое письмо должно быть настроено для этой конкретной аудитории: содержание письма выглядит примерно так: «Здравствуйте, First_Name», вы находитесь в аудитории A, и вы будете сидеть в «Row X, Seat Y» и т. Д.

Для аудитории A требуется электронная почта 1, отправленная в четверг в 10:00, и электронная почта 2, отправленная в пятницу в 14:00, электронная почта 3 в субботу в 12:00

Для аудитории B требуется электронная почта 1, отправленная в пятницу в 10:00:00 и электронная почта 2 отправлены в субботу в 14:00, электронная почта 3 - в воскресенье в 12:00

Для аудитории C требуется электронная почта 1, отправленная в субботу в 10:00, электронная почта 2 - в воскресенье в 14:00, электронная почта3 Понедельник в 12:00.

Что такое «Rails-Way» для автоматизации и пакетной отправки этих писем?Какая-то нестандартная задача с граблями?Или ActiveJob?Или я могу создать кнопку на веб-сайте, чтобы сотрудники кассы могли просто нажать одну кнопку на сайте, и она автоматически отправит все эти электронные письма?

У меня есть приложение на Rails 5, которое может отправлять электронные письмадля всех зрителей, использующих delivery_now и Mailgun, на основе щелчка мышью.Я занимаюсь рефакторингом приложения, чтобы более конкретно разделить аудиторию и автоматизировать доставку писем.Я ничего не знаю об ActiveJob, и я нуби рельсов.

patrons_controller.rb

def audience_segment_A
    Patron.where(audience: A).pluck(:email).batch_send
end

def batch_send
    PatronMailer.send(email_1).deliver_now
    PatronMailer.send(email_2).deliver_later(wait: 26.hours)
    PatronMailer.send(email_3).deliver_later(wait: 22.hours)
end

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

1 Ответ

0 голосов
/ 27 января 2019

Я бы создал отдельную таблицу / модель для хранения всех электронных писем (может быть Invitation). Добавьте два новых атрибута: статус (в ожидании / отправлено) и time_to_sent (дата и время). Затем запустите сценарий rake, который запрашивает у таблицы все записи, которые еще ожидают обработки и должны быть отправлены:

Invitation.where(status:pending).where('time_to_send < ?', DateTime.now)

Тогда отправьте все эти письма. После успешной отправки обновите статус соответствующим образом.

Возможно, это немного надежнее, чем создание Джобса. Я думаю, что Джобс следует использовать для вещей, которые должны произойти прямо сейчас, но в основном потоке, и / или не являются критичными для бизнеса. Вы хотели бы быть на 100% уверены, что электронные письма будут отправлены, вероятно.

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