LoginSignup
11
10

More than 5 years have passed since last update.

メール送信機能の実装

Posted at

ある特定のアクションを行ったら、メールが届くようにしたい!というニーズありませんか?
というわけで、いまとなってはかなりポピュラーな技術ですが、基本的なMailerの設定方法について記します。

1.メーラーを設定

まず、MailerというControllerに相当するクラスを生成します。
rails generate メーラーの名前 メソッド名[オプション]

今回、TestMailerというメーラーを作成したとします。

rails generate mailer TestMailer sendmaild_confirm
app/mailers/test_mailer.rb
class TestMailer < ActionMailer:Base
  
  default from: 'test@gmail.com'
        cc: 'test_test@gmail.com'

  def sendmail_confirm(user)
    @user = user
    mail(to: user.email, subject:'ユーザー登録ありがとうございました。')
  end
end

defaultメソッドでデフォルトのヘッダー情報を設定します。
def以下はコントローラーでいうアクションメソッドです。

2. メールのレイアウトを編集する。

rails generate mailer TestMailer sendmaild_confirmを行った際に、
app/views/test_mailer/sendmail_confirm.text.rbというファイルが生成されたかと思います。
sendmail_confirm.text.rbに好きな文言を入力してください。もし、HTMLメールを送信したい場合は、sendmail_confirm.html.erbにHTMLを書いてください。

登録完了しました!
<HTML>
  <p>登録完了しました!</p>
</HTML>

3.任意のコントローラーに設定

最後は、任意のアクションコントローラーのアクションにメーラーを呼び出すメソッドを書くのみです。
今回は、ユーザー登録が完了したら自動で登録完了メールを送るとしましょう。

users_controller.rb
def create
  @user = User.new(paramas[:user])
  if @user.save
    TestMailer.sendmail_confirm(@user).deliver #.deliverでメールを送信
    redirect_to user_path
  else
    render `new`
  end
end

deliverメソッドを使用してTest Mailerのsendmail_confirmのメールを@userに送信します。

基本的なメーラーの設定は以上になります。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10