在Rails 3中,我们可以限制哪些域从我们的登台服务器接收电子邮件?

Nic*_*ick 3 ruby email ruby-on-rails actionmailer

我们希望在登台服务器上测试电子邮件功能,但我们不希望不小心给客户发送电子邮件.

所以,我希望发送电子邮件到"anything@corporation.com"工作,但发送到"anything@customer.com"的电子邮件被禁止.

我可以进入我的所有控制器并输入代码,只有当电子邮件包含我们的域或环境是prod时才触发"传递"方法.但是,这看起来有点像kludgey.我想广泛应用.

clu*_*que 6

使用Mail gem的应用程序(包括rails> = 3.0项目)可以使用safety_mailer gem.指定允许发送的电子邮件中的域(或域集或魔术字),并以静默方式删除发送给所有其他域的电子邮件.

https://github.com/cluesque/safety_mailer

将gem添加到您的Gemfile中,指定要包含它的组(可能不是生产).

gem "safety_mailer", :group => :development
Run Code Online (Sandbox Code Playgroud)

不要忘记捆绑安装来安装

在您的环境文件config/environments/development.rb中配置它,以及一些正则表达式.

config.action_mailer.delivery_method = :safety_mailer
SafetyMailer::Config.allowed_matchers = [ /mydomain.com/, /mytestacct@gmail.com/, /super_secret_test/ ]
Run Code Online (Sandbox Code Playgroud)

...现在,发送电子邮件至anyone@mydomain.com,mytestacct @ gmail.com,bob + super_secret_test @ yahoo.com全部收到并发送电子邮件给其他收件人(例如您复制到测试服务器的生产数据库中的真实用户) )被压制了.