运维开发网
广告位招商联系QQ:123077622
 
广告位招商联系QQ:123077622

ruby-on-rails – 仅针对特定邮件程序的Rails邮件拦截器

运维开发网 https://www.qedev.com 2020-03-07 08:54 出处:网络 作者:运维开发网整理
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将它应用于特定的邮件程序(拦截NotificationMailer而不是其他邮件. 所以我在setup_mail.rb中设置: `NotificationMailer.register_interceptor(DevelopmentMailInter
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb.

但我想将它应用于特定的邮件程序(拦截NotificationMailer而不是其他邮件.

所以我在setup_mail.rb中设置:

`NotificationMailer.register_interceptor(DevelopmentMailInterceptor)

但随后所有邮寄者都被拦截了,就像我写的一样

ActionMailer::Base.register_interceptor(DevelopmentMailInterceptor)

我该如何过滤?

我通过深入探索邮件拦截器的deliver_email方法的message参数找到了解决方案.

class DevelopmentMailInterceptor
  def self.delivering_email(message)

    filteredMailers = %w[
      NotificationMailer
    ]

    if filteredMailers.include?(message.delivery_handler)
      message.subject = "[filter] To:#{message.to} - #{message.subject}"
      message.to = [email protected]'
    end

    return message
  end
end

@ Intrepidd的答案仍然是正确的,因为拦截器应用于整个Mail类,但我找到了我希望实现的方法.

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消