Ruby on rails 如何将ActionMailer配置为在开发模式下有条件地发送电子邮件?

Ruby on rails 如何将ActionMailer配置为在开发模式下有条件地发送电子邮件?,ruby-on-rails,config,actionmailer,Ruby On Rails,Config,Actionmailer,我已经将ActionMailer配置为在开发模式下通过gmail发送电子邮件 config/development.rb config.action_mailer.default_url_options = { host: ENV["MY_DOMAIN"] } config.action_mailer.raise_delivery_errors = true config.action_mailer.delivery_method = :smtp config.action_mailer.per

我已经将ActionMailer配置为在开发模式下通过gmail发送电子邮件

config/development.rb

config.action_mailer.default_url_options = { host: ENV["MY_DOMAIN"] }
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.smtp_settings = {
  address: "smtp.gmail.com",
  port: 587,
  domain: ENV["MY_DOMAIN"],
  authentication: "plain",
  enable_starttls_auto: true,
  user_name: ENV["MY_USERNAME"],
  password: ENV["MY_PASSWORD"]
}
我有这样的设置,所以我的设计师可以触发测试html电子邮件并将其发送到指定地址,以便在各种浏览器/设备中进行测试

但是,在开发模式中,我想阻止所有未发送到指定电子邮件地址的传出电子邮件

我要找的东西是:

config.action_mailer.perform_deliveries = target_is_designated_email_address?
。。。但是我需要某种方法来检查邮件实例,以确保它被发送到正确的地址

有什么想法吗


谢谢

查看ActionMailer使用的邮件gem中的邮件拦截器。你可以在这篇文章中找到更多关于他们的信息

直接来自railscast的相关部分:

创建一个类来重定向邮件

class DevelopmentMailInterceptor
  def self.delivering_email(message)
    message.subject = "[#{message.to}] #{message.subject}"
    message.to = "eifion@asciicasts.com"
  end
end
仅在开发模式下注册拦截器:

Mail.register_interceptor(DevelopmentMailInterceptor) if Rails.env.development?
然后,它会将主题行替换为“[youremail@blahbalh.com]“某个主题”并将消息重定向到您想要的任何人