##内容
登録されたメールアドレスに、確認メールを自動送信する機能を実装する。
##実装
###①アプリ作成
sampleというアプリを作ります。
$ rails new sample
ディレクトリを移動。
$ cd sample
新規に追加されたメールアドレスに送るアプリを作りますので、Userテーブルを作成します。
今回はカラムを2つにします。
$ rails g scaffold User name email
データベースを作成します。
$ rails db:migrate
##②メール送信設定
Gmailを送れるように設定をしていきます。
①config/environments/development.rb
②config/environments/production.rb
①、②に下記のを追加してください。
Rails.application.configure do
config.action_mailer.raise_delivery_errors = true #falseからtrueに変更
#中略#
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
domain: 'smtp.gmail.com',
port: 587,
user_name: Rails.application.credentials.gmail[:user_name],
password: Rails.application.credentials.gmail[:password],
authentication: 'login',
enable_starttls_auto: true
}
end
##③メーラー作成
メール送信におけるコントローラー的役割を果たすものです。
メーラーの名前はSampleMailerとします。
$ rails g mailer SampleMailer
実行すると、app/mailers以下に次の2つのメーラーが作成されます。
①application_mailer 「全体のメーラーの設定」
②sample_mailer 「先ほど作成したSampleMailerという個別のメーラーの設定」
##③メーラーの編集
①application_mailer 「全体のメーラーの設定」
class ApplicationMailer < ActionMailer::Base
default from: "Yamada Taro", #差出人の名前
reply_to: Rails.application.credentials.gmail[:user_name] #差出人のメールアドレス
layout 'mailer'
end
②sample_mailer 「個別のメーラーの設定」
class PostMailer < ApplicationMailer
default from: "Yamada Taro"
def published_email(user)
@user = user
mail to: user.email #新規登録されたメールアドレス
end
end
##④メールの本文作成
メールの本文はapp/views/sample_mailerの配下に作ります。
メールの本文は、「HTMLバージョン」、「テキストバージョン」の2タイプがあります。
今回は、これを作成します。
①published_email.html.erb 「HTMLバージョン」
②published_email.tex.erb 「テキストバージョン」
<!doctype html>
<html lang="ja">
<head>
<meta content="text/html; charset=UTF-8" />
</head>
<body>
<h2><%= @user.name %> 様</h2>
<hr />
<p>
こんにちは! <%= @user.name %>さん!</p>
<hr />
</body>
</html>
===============================
<%= @user.name %>様
===============================
こんにちは! <%= @user.name %>さん
##⑥コントローラーの編集
コントローラーの「createメゾット」に一行追加してください。
class UsersController < ApplicationController
#中略
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
SampleMailer.published_email(@user).deliver #こちらを追加する。
format.html { redirect_to @user, notice: 'User was successfully created.' }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
#中略
end
##⑥ルーティングの編集
最後にルーティングの設定したら完了です。
Rails.application.routes.draw do
resources :users
root "users#index" #こちらを追加する。
end
##最後に起動させて確認して見ましょう!
$ rails s
このように画面が出てきます!
実際に操作して確認して見て下さい。
以上実装は終了です。
ご視聴頂きありがとうございました。