Как создать почтовый обозреватель
Я хотел бы запустить код всякий раз, когда электронное письмо отправляется в моем приложении.
Поскольку 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 был лучшим источником, который я мог найти для информации об этом (они говорят только о перехватчиках, но концепция для наблюдателей та же самая).