かなり複雑なアプリに遡及的にテストを適用しようとしています(二度と)。サインアップ時に新しいユーザーにメールを送信するSendgrid機能を組み込みました。結果として、サインアップページをテストしようとすると、example @ example.netにメッセージを送信しようとしますが、次のエラーが発生します。
Net::SMTPFatalError:
550 Cannot receive from specified address <my app's email>: Unauthenticated senders not allowed
しかし、これが私がテストを行っている方法の問題なのか(私が省略しているもの、私は新しいのか)、それとももっと深い問題なのかはわかりません。GmailからSendgridに切り替えてから、オンラインではなくサーバーで使用したときにアプリが送信する必要のあるメールでエラーが発生しました。Sendgridが特にWebアプリベースの電子メールサービスであることにチョークで書いたが、今は設定ファイルで何か間違ったことをしていると推測している。構成を設定する方法は次のとおりです。
initializers / 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、testに個別の設定が必要かどうか疑問に思っています.rbなど(また、私はそのスイッチを試しましたが、エラーは変わりませんでした)。また、capybara / rspecがテスト中に電子メール要求を無視する回避策がある場合(または、偽の電子メールアドレスであることに対処し、送信を試みずに電子メールをテストします)。
ありがとう!