我有一个拦截器: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 = 'logs@mail.com'
- end
- return message
- end
- end