#はじめに
先日、Ruby on Railsでアプリケーションを作成しました。
その中で、ユーザーに新規登録をしてもらうと同時に、ユーザーのメールアドレス宛にメールを送る機能を作りました。
ネットで調べつつ、試行錯誤しながら実装したのですが、色々な情報が入り乱れていて、少しだけ分かりにくかった印象があったので、備忘録も兼ねて、ここでまとめたいと思います。
それでは参りましょう!
#メール送信機能を記述
#以下を追記
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_url_options = { :host => 'localhost:3000'}
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => 'smtp.gmail.com',
:port => 587,
:domain => 'gmail.com',
:user_name => "hoge@gmail.com", # user_name, passwordはご自身のものに変更して下さい。
:password => "hogehoge",
:authentication => :plain,
:enable_starttls_auto => true
}
#メーラーを作成
メール送信におけるコントローラー的役割を果たすMailerを作成します。
rails g mailer <メーラー名> <メソッド名>
$ rails g mailer ThanxMailer complete_registration
このコマンドを打つことにより、app/mailers/application_mailer.rb
とapp/mailers/thanx_mailer.rb
が生成されます。
次に、それらのテンプレートファイルを編集していきましょう!!
#メーラーを編集
class ApplicationMailer < ActionMailer::Base
default from: '管理者'
layout 'mailer'
end
class ThanksMailer < ApplicationMailer
def complete_registration(user)
@user = user
mail(:subject => "登録ありがとう!!!!", to: user.email)
end
end
#メール本文の作成
<%= @user.name %> 様
会員登録ありがとう!!!!
#コントローラへの記述
def create
@user = User.new(user_params)
if @user.save
ThanxMailer.complete_registration(@user).deliver
end
end
メーラーは、メーラー名.メソッド名
と記述することで、クラスメソッドを呼び出すように実行できます。
実際の送信はdeliver
メソッドが行います。
#おわりに
メール送信機能自体は、記述する量も比較的少ないため、理解がしやすいと思います。
ただただコピペするだけでなく、一つ一つの意味をしっかり理解していきたいですね。