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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 仅针对特定邮件程序的Rails邮件拦截器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb.

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

所以我在setup_mail.rb中设置:

  1. `NotificationMailer.register_interceptor(DevelopmentMailInterceptor)

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

  1. ActionMailer::Base.register_interceptor(DevelopmentMailInterceptor)

我该如何过滤?

解决方法

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

  1. class DevelopmentMailInterceptor
  2. def self.delivering_email(message)
  3.  
  4. filteredMailers = %w[
  5. NotificationMailer
  6. ]
  7.  
  8. if filteredMailers.include?(message.delivery_handler)
  9. message.subject = "[filter] To:#{message.to} - #{message.subject}"
  10. message.to = 'logs@mail.com'
  11. end
  12.  
  13. return message
  14. end
  15. end

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

猜你在找的Ruby相关文章