5

我正在尝试将测试追溯应用到一个非常复杂的应用程序(再也不会)。我已经内置了 Sendgrid 功能,可以在新用户注册时向他们发送电子邮件。结果,当我尝试测试注册页面时,它尝试向我的 example@example.net 电子邮件发送一条消息,我收到以下错误:

Net::SMTPFatalError:
550 Cannot receive from specified address <my app's email>: Unauthenticated senders not allowed

不过,我不清楚这是我如何进行测试的问题(我遗漏了一些东西——我是新人),还是更深层次的问题。自从我从 GMail 切换到 Sendgrid 后,我的应用程序在服务器上使用它时应该发送的电子邮件出现了错误,尽管不是在线的。我将其归结为 Sendgrid 是一个专门的基于 Web 应用程序的电子邮件服务,但现在我猜我在配置文件中做错了。我设置配置的方式是这样的:

初始化程序/mail.rb

# SendGrid Settings
ActionMailer::Base.smtp_settings = {
  :address        => 'smtp.sendgrid.net',
  :port           => '587',
  :authentication => :plain,
  :user_name      => ENV['SENDGRID_USERNAME'],
  :password       => ENV['SENDGRID_PASSWORD'],
  :domain         => 'heroku.com'
}
ActionMailer::Base.delivery_method = :smtp

我的 environment.rb 文件中没有任何内容。这个问题表明,也许我应该将这些设置切换到 environment.rb 文件中,但是(显然,我不太了解配置文件),我想知道是否应该为 development.rb 设置单独的设置,测试.rb 等(另外,我尝试了那个开关,但它并没有改变错误)。此外,如果 capybara/rspec 有一种解决方法可以在测试期间忽略电子邮件请求(或者以某种方式处理它是一个假电子邮件地址并在不尝试发送的情况下测试电子邮件)。

谢谢!

4

1 回答 1

6

您应该能够通过配置将 ActionMailer 设置为测试模式:

config.action_mailer.delivery_method = :test

或在您的测试中:

ActionMailer::Base.delivery_method = :test

您还可以找到有关测试邮件的更多信息

于 2012-11-20T19:53:21.167 回答