如何创建邮件观察者

发布于 2024-10-15 00:00:36 字数 131 浏览 3 评论 0原文

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

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

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

谢谢!

I'd like to run some code whenever an email is sent on my app.

As ActionMailer doesn't support after_filter, I would like to use an observer.

The Rails docs mention this in passing, however does not elaborate.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

南风起 2024-10-22 00:00:36

我很惊讶 Rails 的文档中对此的描述如此之少。

基本上,Rails 3 中的 ActionMailer 引入了拦截器(在消息发送之前调用)和观察者(在消息发送之后调用)的使用。

要设置观察者,请将以下内容添加到初始值设定项:

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 是我能找到的有关此信息的最佳来源(他们只谈论拦截器,但对于观察者来说概念是相同的)。

I'm surprised how little there is in Rails' documentation about this.

Basically, ActionMailer in Rails 3 introduces the use of Interceptors (called before the message is sent) and Observers (after the message is sent).

To set up an Observer, add the following to an initializer:

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

ActionMailer::Base.register_observer(MailObserver)

Now, the delivered_email method will run every time your app sends an e-mail. However, you will only have access to the actual Mail message.

To register an Interceptor instead, do the same as above, replacing register_observer with register_interceptor, and renaming the method from self.delivered_email to self.delivering_email.

This Railscast was the best source I could find for info on this (they only talk about interceptors, but the concept is the same for observers).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文