将ActionMailer限制为一个域

时间:2010-08-09 23:32:40

标签: ruby-on-rails ruby

我有一个在临时环境中运行的rails应用程序,它是生产的准确副本。我希望能够使用ActionMailer发送邮件,以测试它是否正常工作,但为了防止任何错误,我非常希望能够限制邮件程序发送到任何不在的地址我自己的域名。

似乎ActionMailer从开始就不支持这个,但是有插件还是某种补丁可以做到这一点?

3 个答案:

答案 0 :(得分:2)

我正在取得成功:

module FilteredMailer

  def self.included(base)
    base.class_eval do
      alias_method :create_mail_orig, :create_mail

      def create_mail
        recipients(filter_out_recipients(recipients))
        create_mail_orig
      end
    end
  end

  private

  def filter_out_recipients(recipients)
    ...
  end
end

您需要在所有邮件程序中包含此模块。这适用于Rails 2.3.8,我不知道它是否适用于Rails 3。

答案 1 :(得分:1)

看看sanitize_email宝石 - 这是一个很好的解决方案。

它不允许您指定域名,但它允许您限制电子邮件发送到特定的收件人列表,这将阻止任何电子邮件发送到非预期的收件人。

答案 2 :(得分:0)

查看mail_safe gem。它有点类似于sanitize_email gem,但允许继续正常发送白名单域名/电子邮件的电子邮件。而this blog post(不是我的)涵盖了sanitize_email和mail_safe gems的配置和使用。