lulu

【Rails】Active Mailerを使って、メール送信機能を作成し、previewで確認する方法

やること

Railsの標準機能であるActive Mailerを使って、メール送信機能を作成し、previewで確認する方法を紹介します!

ver

  • ruby 2.5.1
  • Rails 6.0.3

action mailerの準備

$ rails g mailer HelloMailer

HelloMailerクラスが作成される

HelloMailerクラスを編集する

app/maileers/hello_mailer.rb

class HelloMailer < ApplicationMailer
  def hello
    @name = params[:name]
    mail(to: params[:to], subject: 'Hello!!')
  end
end

メールのviewを編集する

テンプレートファイル

mailerの機能では、htmlメールとテキストメールを選択できる。
それぞれ、以下のファイルでviewを編集できる。

  • app/view/hello_mailer/hello.html.erb
  • app/view/hello_mailer/hello.text.erb

メール本文を作成する

text形式のファイルでメールを送信する場合

app/view/hello_mailer/hello.text.erb

Hello! <%= @name %>

preview機能で確認する

メール送信を実際に行わずに、ブラウザでpreviewを確認することができる。

test/mailers/previews/hello_mailer_preview.rb

class HelloMailerPreview < ActionMailer::Preview
  def hello
    HelloMailer.with(to: "lulu@lulu.com", name: "lulu").hello
  end
end

http://localhost:3000/rails/mailers/hello_mailer/hello

↑にアクセスすると、実際に送られるメールと同じメールが送信される。

SendgridやSESを利用する

Railsの標準メール機能ではなく、メールサーバーであるSendgridやSESを利用する方法もある。