3

Heroku でホストされているサイトから確認メールを送信するために ActionMailer を使用しています。smtp_settings でユーザー名とパスワードを文字列として入力したときは問題なく動作していましたが、Github で公開されているため、明らかにセキュリティ上の欠陥です。そこで今日、Gmail のパスワードを変更し、Heroku の設定を使用してユーザー名とパスワードを保存しました。私のsmtp設定は次のようになります。

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings ={
  address: "smtp.gmail.com",
  port: 587,
  domain: "gmail.com",
  user_name: "#{ENV['EMAIL_USER']}",
  password: "#{ENV['EMAIL_PASS']}",
  authentication: "plain",
  enable_starttls_auto: true
}

メールを送信しようとするたびに、「Net::SMTPAuthenticationError (535-5.7.8 ユーザー名とパスワードが受け入れられませんでした」というエラーが表示されます。コンソールに構成設定の値を表示するために puts を追加しました。

puts "USERNAME : #{ENV['EMAIL_USER']}"
puts "PASSWORD : #{ENV['EMAIL_PASS']}"

Heroku のログでは、完全に問題なく出力されました。不審なアクティビティが原因で Gmail がログインをブロックしているという別の投稿を読みましたが、そのような警告はありませんでした。構成変数を使用すると機能しません-文字列に戻すと、ローカル開発環境で機能するようになりました。私はここで少し途方に暮れています。何か案は?

4

1 に答える 1