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