如何在deliver_email钩子中取消电子邮件?

时间:2011-10-19 16:42:30

标签: ruby-on-rails actionmailer

我正在实施电子邮件消息队列。 我使用拦截器。

class MyInterceptor
  def self.delivering_email(mail)
    Email.queue(mail)
  end
end

ActionMailer::Base.register_interceptor(MyInterceptor)

但是这段代码以正常方式发送电子邮件。 如何阻止发送电子邮件? 我将手动从队列中发送电子邮件。

感谢。

萨姆

3 个答案:

答案 0 :(得分:4)

Mail::Message#perform_deliveries设为false

class NeverDeliverInterceptor
  def self.delivering_email(message)
    message.perform_deliveries = false
  end
end

ActionMailer::Base.register_interceptor(NeverDeliverInterceptor)

See API doc来源&其他用法。

答案 1 :(得分:1)

我找到了解决方法。我只是将delivery_method设置为:test。

答案 2 :(得分:0)

简单地将delivery_method设置为自定义传递代理类可能会更好(请参阅http://api.rubyonrails.org/v3.2.14/classes/ActionMailer/Base.html)。