ruby-on-rails - 根据环境覆盖 ActionMailer 中的字段

标签 ruby-on-rails ruby actionmailer

我正在使用 Rails 4.2,想为特定环境的所有 ActionMailer 邮件程序覆盖 to 字段。在这种情况下,我想覆盖登台中使用的所有邮件程序的 to 字段。我的目标是让暂存环境以与生产环境完全相同的方式发送邮件,但将其全部转储到测试收件箱中。

我知道有一些服务可以对此提供帮助,但我的目标是使用我的生产 API 进行暂存交付作为彻底测试。

我希望我可以在邮件程序关闭之前使用混合或其他东西来重置 to 字段。

最佳答案

不确定您使用的是哪个版本的 Rails,但您可以考虑使用新的邮件拦截器来完成此操作。

主要优点是它不会直接打乱您的 ActionMailer 类。

http://guides.rubyonrails.org/action_mailer_basics.html#intercepting-emails

复制他们的例子:

class SandboxEmailInterceptor
  def self.delivering_email(message)
    message.to = ['sandbox@example.com']
  end
end

config/initializers/sandbox_email_interceptor.rb:

ActionMailer::Base.register_interceptor(SandboxEmailInterceptor) if Rails.env.staging?

关于ruby-on-rails - 根据环境覆盖 ActionMailer 中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376728/

相关文章:

jquery - .autocomplete 不是一个函数

ruby-on-rails - 为什么我的 Rspec 测试会发送真实的邮件?

ruby - oauth 不工作,对于基本的 LinkedIn http 请求

ruby-on-rails - 一般与模型特定的观察者和邮寄者?

ruby-on-rails - ActionMailer 替代方案

ruby-on-rails - Rails 预览更新关联而不保存到数据库

javascript - 如何在 Ace 编辑器中启用实时语法检查

ruby-on-rails - 如果选择存在,不要创建嵌套表单

ruby - 无法在 Ubuntu 12.10 (AMD64) 上安装 gem "pg"

ruby-on-rails - Rails 没有使用我的全局 Ruby 版本