我有一个拦截器:DevelopmentMailInterceptor
和一个启动拦截器的初始化器setup_mail.rb
。
但我想将其应用于特定的邮件程序(拦截NotificationMailer
而不是其他邮件。
所以我设置了setup_mail.rb
:
`NotificationMailer.register_interceptor(DevelopmentMailInterceptor)
然后所有邮寄者都被拦截了,好像我写了
ActionMailer::Base.register_interceptor(DevelopmentMailInterceptor)
我该如何过滤?
答案 0 :(得分:13)
我通过深入探索邮件拦截器的message
方法的delivering_email
参数找到了解决方案。
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
@ Intrepidd的回答仍然是正确的,因为拦截器应用于整个Mail
类,但我找到了解决方法。
答案 1 :(得分:2)
你不能。
拦截器在全局Mail
类上注册(参见register_interceptor的来源)
如果您需要拦截器仅对特定电子邮件有效,则应在拦截器类中添加一个条件。