Closed Itok1000 closed 4 days ago
エラーログに記録されているエラー:
Errno::ECONNREFUSED (Connection refused - connect(2) for "localhost" port 25):
これは、メール送信時にデフォルトで使用されるlocalhost:25のSMTPサーバーが利用できないことを示している 本番環境では、開発環境のletter_openerとは異なり、実際のSMTPサーバーを通じてメールを送信する必要がある
本番環境でメール送信を正しく行うために、SMTPの設定を追加する
config/environments/production.rbにSMTP設定を追加 以下のように、SMTPサーバー(例: Gmail、SendGridなど)を設定する ここではGmailを例に
Rails.application.configure do # 他の設定 config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { address: 'smtp.gmail.com', port: 587, domain: 'example.com', # 自分のドメイン名 user_name: ENV['SMTP_USERNAME'], # Gmailアカウント password: ENV['SMTP_PASSWORD'], # Gmailアカウントのパスワード authentication: 'plain', enable_starttls_auto: true } config.action_mailer.default_url_options = { host: 'your-production-domain.com', protocol: 'https' } # Fly.io ドメインを使用している場合: # config.action_mailer.default_url_options = { host: 'gamarjoba.fly.dev', protocol: 'https' } end
メールアカウント情報(SMTP_USERNAMEとSMTP_PASSWORD)を環境変数に設定する
Fly.ioを使用している場合、Fly CLIで環境変数を設定できる
注意
GmailのSMTPサーバーは、アカウントのセキュリティ設定が標準のパスワードではなく、アプリ パスワードを必要としていることを示す
Gmailアカウントで、次の手順でアプリ パスワードを生成
「2段階認証プロセス」が有効になっていることを確認 「アプリ パスワード」のセクションに移動 使用するアプリとデバイスを選択して新しいパスワードを生成
fly secrets set SMTP_USERNAME=your_gmail_username SMTP_PASSWORD=your_gmail_password
または、使用しているSMTPサービスの認証情報をFly.ioに設定
設定を変更した後、アプリケーションを再デプロイ
fly deploy
本番環境にてパスワードリセット機能を実装すると、下記のエラーが発生
エラーログに記録されているエラー:
これは、メール送信時にデフォルトで使用されるlocalhost:25のSMTPサーバーが利用できないことを示している 本番環境では、開発環境のletter_openerとは異なり、実際のSMTPサーバーを通じてメールを送信する必要がある
解決方法
1. SMTPサーバーの設定を追加する
本番環境でメール送信を正しく行うために、SMTPの設定を追加する
config/environments/production.rbにSMTP設定を追加 以下のように、SMTPサーバー(例: Gmail、SendGridなど)を設定する ここではGmailを例に
2. 環境変数の設定
メールアカウント情報(SMTP_USERNAMEとSMTP_PASSWORD)を環境変数に設定する
Fly.ioを使用している場合、Fly CLIで環境変数を設定できる
注意
GmailのSMTPサーバーは、アカウントのセキュリティ設定が標準のパスワードではなく、アプリ パスワードを必要としていることを示す
Gmailアカウントで、次の手順でアプリ パスワードを生成
「2段階認証プロセス」が有効になっていることを確認 「アプリ パスワード」のセクションに移動 使用するアプリとデバイスを選択して新しいパスワードを生成
または、使用しているSMTPサービスの認証情報をFly.ioに設定
3. 設定を反映
設定を変更した後、アプリケーションを再デプロイ