【问题标题】:How do I create a Mailer Observer如何创建邮件观察者
【发布时间】:2011-06-18 12:57:56
【问题描述】:

每当在我的应用上发送电子邮件时,我想运行一些代码。

由于 ActionMailer 不支持 after_filter,我想使用观察者。

Rails 文档顺便提到了这一点,但没有详细说明。

谢谢!

【问题讨论】:

    标签: ruby-on-rails-3 observer-pattern actionmailer


    【解决方案1】:

    我很惊讶 Rails 的文档中关于此的内容很少。

    基本上,Rails 3 中的 ActionMailer 引入了 Interceptor(在消息发送之前调用)和 Observers(在消息发送之后)的使用。

    要设置观察者,请将以下内容添加到初始化程序中:

    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

    This Railscast 是我能找到的最佳信息来源(他们只谈论拦截器,但对于观察者来说概念是相同的)。

    【讨论】:

    • 谢谢 dmarkow,这正是我要找的,正如你所说,信息稀缺,尤其是当你不知道“拦截器”这个词是一个要寻找的时候。
    • 这引发了更多问题 - (1) 您如何判断使用了哪个邮件程序和哪种方法,(2) 您将如何观察失败以及 (3) 您将如何对此进行测试,包括失败案例?
    猜你喜欢
    • 2023-04-10
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    相关资源
    最近更新 更多