[英]Rails mail interceptor only for a specific mailer
我有一個攔截器: DevelopmentMailInterceptor
和一個啟動攔截器的inititializer setup_mail.rb
。
但我想將它應用於特定的郵件程序(攔截NotificationMailer
而不是其他郵件。
所以我在setup_mail.rb
設置:
`NotificationMailer.register_interceptor(DevelopmentMailInterceptor)
但隨后所有郵寄者都被攔截了,就像我寫的一樣
ActionMailer::Base.register_interceptor(DevelopmentMailInterceptor)
我該如何過濾?
我通過在深度探索找到的解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
類,但我找到了實現我想要的方法。
你不能。
攔截器在全局Mail
類上注冊(參見register_interceptor的源代碼)
如果您需要攔截器僅對特定電子郵件有效,則應在攔截器類中添加一個條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.