【Ruby on Rails】本番環境でメールを送ろうとするとエラーになります
Qiita・プログラミング初心者です。
至らぬことが多いですが、よろしくお願いします。
実行環境
ruby 2.6.3
Rails 6.1.6.1
AmazonのEC2、RDS、デプロイにPumaとNginxを利用しています。
解決したいこと
Ruby on Railsでコミュニティサイト風のWebアプリを制作中です。
お問い合わせ機能(問い合わせ完了で管理者に通知メールが届く)に挑戦しています。
開発環境ではメールの受け取りまで上手くいきましたが、本番環境で送信を押すと
エラーが発生します。
発生している問題・エラー
EC2にログインしてtail -f production.logで確認すると
F, [2022-12-18T09:26:58.404241 #5852] FATAL -- : [c9437e69-7b50-41ed-bc5b-49f6b74c0115]
[c9437e69-7b50-41ed-bc5b-49f6b74c0115] ArgumentError (SMTP To address may not be blank: []):
宛先が空になっているということでしょうか。
gem 'dotenv-rails'と.env(と.gitignore)を利用して、送り先や送信元の情報の受け渡しは上手くいっているはずなのですが…
該当するソースコード
class ApplicationMailer < ActionMailer::Base
default from: '自分'
default to: ENV["TOMAIL"]
layout 'mailer'
end
TOMAIL="送り先@gmail.com"
SMTP_USERNAME='送信元@gmail.com'
SMTP_PASSWORD='gmailアドレスのパスワード'
送り先と送信元は同じアドレス(私用)にしています。
config.action_mailer.default_url_options = { host: 'http://アプリ名.com'}
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
port: 587,
address: 'smtp.gmail.com',
domain: 'smtp.gmail.com',
user_name: ENV['SMTP_USERNAME'],
password: ENV['SMTP_PASSWORD'],
authentication: 'plain',
enable_starttls_auto: true
}
end
本番環境の設定はproductionで行うということで、このように記述しています。
自分で試したこと
初めは上記以外にルーティングエラーも発生していたので、コントローラと合わせて修正してみました。
scope module: :public do
resources:inquiries,only:[:new, :create]
post 'inquiries/confirm'=> 'inquiries#confirm',as: "confirm"
get 'inquiries/thanks' => 'inquiries#thanks',as: "thanks"
end
class Public::InquiriesController < ApplicationController
def new
#入力画面
@inquiry=Inquiry.new
end
def confirm
#確認画面
@inquiry = Inquiry.new(inquiry_params)
render :new unless @inquiry.valid?
end
def create
@inquiry = Inquiry.new(inquiry_params)
InquiryMailer.send_mail(@inquiry).deliver
redirect_to "/inquiries/thanks"
end
def thanks
end
private
def inquiry_params
params.require(:inquiry).permit(:name, :message)
end
end
が、うまくいかず。
ローカル環境では送信できているので、やはりconfig/environments/production.rbの設定が間違っているのでしょうか。ご教示いただけると嬉しいです。