Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

メール送信機能の実装

More than 5 years have passed since last update.

ある特定のアクションを行ったら、メールが届くようにしたい!というニーズありませんか?
というわけで、いまとなってはかなりポピュラーな技術ですが、基本的な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に送信します。

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

atrae
People Techカンパニーとして、転職サイトGreen, ビジネスマッチングアプリyenta, 組織改善プラットフォームwevoxなどのサービスを運営。全ての社員が誇りを持てる組織と事業の創造にこだわり、関わる人々がファンとして応援したくなるような魅力ある会社であり続けることを目指しています。
https://atrae.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away