6

Figaro gem で設定した外部ファイル (config/application.yml) に Sendgrid パスワードを設定しました。これはローカル マシンでは問題なく動作しますが、サーバーではパスワードが設定されていないというエラーが表示されます。

ArgumentError (SMTP-AUTH requested but missing secret phrase)

Sendgrid の構成をプレーンテキストのパスワードだけに変更すると、正常に動作するため、Rails が環境変数を認識していないと想定します。奇妙なことは、私が入っrails console productionて実行するputs ENV["SENDGRID_PASSWORD"]とうまくいくということです。

何か案は?

これが私のSendgrid設定です:

config.action_mailer.smtp_settings = {
  :address              => "smtp.sendgrid.net",
  :port                 => 587,
  :user_name            => "chrislawrence",
  :password             => ENV['SENDGRID_PASSWORD'],
  :domain               => "lakecinema.net.au",
  :authentication       => :plain,
  :enable_starttls_auto => true
}
4

2 に答える 2

1

私も同じ問題を抱えていて、Railsがパスワードを与えていないと思った理由を理解できませんでした。あるファイルで定義config.action_mailer.smtp_settingsしてから、別のファイルでkey-value-combosを追加していたことがわかりました。問題は、merge代わりに使用しmerge!ていたため、パスワードがsmtp_settingsにではなく、一時的なハッシュになっていることです。

この経験から、表示されるエラーメッセージは、ActionMailerの「パスワードはどこにありますか?」という言い方であることがわかりました。

したがって、私の推測では、問題はRailsコンソールとPowの環境変数の逆であり、環境変数はRailsサーバーでは機能しますが、Railsコンソールでは機能しません。実行してみてください:

$ echo "$SENDGRID_PASSWORD"

そしてあなたが得るものを見てください。Env変数が設定されていないように感じますが、代わりにRailsコンソールのローカル変数にすぎません。

于 2012-10-29T04:50:44.573 に答える
-1

:authentication => 'plain' である必要があります

于 2016-06-22T04:02:58.033 に答える