はじめに
ruby 2.7.2
Rails 6.1.1
お問い合わせのメールが送信できない
ローカルでは問題なく送信できていたお問い合わせが、本番環境で機能しなくなった。
サーバー側のログを確認
ひとまずログを確認することで、以下のようなエラーメッセージが出ていた。
log/production.log
Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25):
エラー内容としては、ActionMailerの配信方法が正しく設定されていない?
ローカルホストポート25でSMTPサーバーを使用して電子メールを送信するように構成されていることを示しています。(引用)
構成が使用されていないことを示している。
【解決策】config/environments/production.rbにもMailerの設定を記述する
サーバーへのデプロイをproduction環境で稼働させている場合は、config/environments/production.rbにMailerの設定を記述する必要がある。
(config/environments/development.rbでしか設定をしていなかった...。)
config/environments/development.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
domain: 'gmail.com',
port: 587,
user_name: <ユーザー名>,
password: <パスワード>,
authentication: 'plain',
enable_starttls_auto: true
}
上記に記述しているMailerの設定を、config/environments/production.rbにも記述することで、本番環境でも動くことを確認できた。
参考資料