Railsアプリでアクションメーラーを使用してGmailを送信するHerokuに苦労しています。
Gmail のユーザー名とパスワードを Heroku 構成変数として正しく設定しましたが、それでも認証エラーが発生します。イニシャライザを作成する必要があることを最終的に発見しましたが、すべてを接続するのに問題があります。次のコードは、heroku ログに正しいユーザー名とパスワードを表示しますが、NoMethodError が発生します。すべてを機能させるためのメソッドをどこに配置すればよいかわかりません。users_controller に入れてみましたが、全体がクラッシュします。
これが機能するようになったら、S3 のものをこの初期化子に追加する予定です。
私の初期化子/heroku.rb
GMAIL_CREDENTIALS = { :username => ENV['GMAIL_USERNAME'],
:password => ENV['GMAIL_PASSWORD'] }
私のメーラー/user_mailer.rb
class UserMailer < ActionMailer::Base
default from: "mygmailaddress", :gmail_credentials => GMAIL_CREDENTIALS
def signup_confirmation(user)
@user = user
mail to: user.email, subject: "Sign Up Confirmation"
end
end
私のusers_controllerで作成します:
def create
@user = User.new(params[:user])
if @user.save
UserMailer.signup_confirmation(@user).deliver
sign_in @user
flash[:success] = "Welcome to Plain Vanilla!"
redirect_to @user
else
render 'new'
end
end
heroku ログのエラー メッセージ:
Completed 500 Internal Server Error in 482ms
app/controllers/users_controller.rb:21:in `create'
NoMethodError (undefined method `encoding' for {:username=>"mygmailusername",
:password=>"mypassword"}:Hash):
助けてくれてありがとう!
チャーリー