Как создать почтовый обозреватель

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

Поскольку ActionMailer не поддерживает after_filter, я бы хотел использовать наблюдателя.

Документы Rails упоминают об этом попутно, но не уточняют.

Спасибо!

1 ответ

Решение

Я удивлен, как мало в документации Rails по этому поводу.

По сути, ActionMailer в Rails 3 вводит использование Interceptors (вызываемых перед отправкой сообщения) и Observers (после отправки сообщения).

Чтобы настроить Observer, добавьте следующее в инициализатор:

class MailObserver
  def self.delivered_email(message)
    # Do whatever you want with the message in here
  end
end

ActionMailer::Base.register_observer(MailObserver)

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

Чтобы зарегистрировать перехватчик, сделайте то же, что и выше, заменив register_observer с register_interceptorи переименование метода из self.delivered_email в self.delivering_email,

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

Другие вопросы по тегам