これまでに作った機能について簡単にまとめていく。

今回は、

開発環境のメール送信機能の作成

前提条件

ログイン機能があること
ログイン機能についてはこちら

使用モデル

Userモデル

カラム データ型
1 name string
2 mail string
3 password_digest string

Gemの導入

letter_opener_webは、送信したメールを確認するGem

group :development do
  gem 'letter_opener_web'
end

bundle installの実行

ルーティングの設定

if Rails.env.development?
  mount LetterOpenerWeb::Engine, at: "/letter_opener"
end

開発環境でのメール送信の設定

config/environments/development.rb

config.action_mailer.default_url_options = { host: 'localhost:3000' }
config.action_mailer.delivery_method = :letter_opener_web

以上でhttp://localhost:3000/letter_openerより
送信されたメールを確認可能

メイラーの作成

今回は、ユーザー登録時の通知メールを作成

$ rails g mailer EntryMailer

メール送信処理の作成

app/mailers/entry_mailer.rb

class EntryMailer < ApplicationMailer
  def comfirm_mail(user)
    @mail = user.mail
    @user = user.name

    mail to: "#{@mail}", subject: "ご登録が完了しました。"
  end
end

メール本文の作成

app/views/entry_mailer/comfirm_mail.html.erb

<%= @user %>様のご登録が完了しました。

メーラーの呼び出し

app/controllers/users_controller.rb

class UsersController < ApplicationController
  
  def create
    @user = User.new(user_params)
    if @user.save
      EntryMailer.confirm_mail(@user).deliver
      redirect_to root_path
    else
      render 'new'
    end
  end
 
end

以上で作成完了