簡體   English   中英

僅針對特定郵件程序的Rails郵件攔截器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM