在暂存环境中覆盖ActionMailer主题

Jon*_*mon 5 ruby ruby-on-rails actionmailer ruby-on-rails-3

我希望从我们的登台服务器发送的所有电子邮件都在主题中以"[STAGING]"开头.使用ActionMailer在Rails 3.2中有一种优雅的方法吗?

Jon*_*mon 18

这是我根据现有答案使用ActionMailer Interceptor找到的优雅解决方案.

# config/initializers/change_staging_email_subject.rb
if Rails.env.staging?
  class ChangeStagingEmailSubject
    def self.delivering_email(mail)
      mail.subject = "[STAGING] " + mail.subject
    end
  end
  ActionMailer::Base.register_interceptor(ChangeStagingEmailSubject)
end
Run Code Online (Sandbox Code Playgroud)


Bru*_*sco 5

这适用于 Rails 4.x

class UserMailer < ActionMailer::Base
  after_action do
    mail.subject.prepend('[Staging] ') if Rails.env.staging?
  end

  (...)
end
Run Code Online (Sandbox Code Playgroud)