如何在开发中禁用 ActionMailer?
Posted
技术标签:
【中文标题】如何在开发中禁用 ActionMailer?【英文标题】:How to disable ActionMailer in Development? 【发布时间】:2011-12-05 11:54:11 【问题描述】:有时在我开发过程中,我没有互联网连接。这会在我的应用应该发送电子邮件的任何地方导致错误:
getaddrinfo: nodename nor servname provided, or not known
是否有一种简单快捷的方法可以更改配置值以使 ActionMailer 不尝试实际发送电子邮件而不抛出错误?也许那是开发环境的范围。或者我可以通过其他方式避免抛出错误并且我的代码在我调用 actionmailer 的任何地方传递?
我正在使用 Rails 3.1
【问题讨论】:
【参考方案1】:如果您想在 Rails 应用程序初始化后(在创建示例数据、迁移期间等)禁用邮件传递:
ActionMailer::Base.perform_deliveries = false
【讨论】:
【参考方案2】:通常的做法是让 Rails 忽略邮件错误。在您的config/environments/development.rb
文件中添加、取消注释或修改:
# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false
你也可以这样设置:
config.action_mailer.perform_deliveries = false
在此处查看文档http://edgeguides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration
你也可以将传递方式设置为:test,但我还没有真正尝试过
config.action_mailer.delivery_method = :test
【讨论】:
对于对.delivery_method = :test
感兴趣的人:ActionMailer 不会发送任何电子邮件,而是将它们存储在ActionMailer::Base.deliveries
可用的数组中。这可能是大多数人的首选选项,因为它使您能够例如在代码中放置一个断点并确保 ActionMailer 收到了您的发送请求(并且看起来应该如此),或者当然在测试中使用它。 (来源:api.rubyonrails.org/classes/ActionMailer/Base.html)以上是关于如何在开发中禁用 ActionMailer?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ActionMailer 中将云文件添加为电子邮件附件
ActionMailer在测试模式下发送真实的电子邮件! - 如何关闭?
Rails - 你如何测试 ActionMailer 在测试中发送了特定的电子邮件
使用 rspec 进行 ActionMailer 测试 [关闭]