学習記録

アウトプット用に作りました

ActionMailerを使用

ActionMailerとは

railsにデフォルトで備わっているメール送信機能です。
app/mailers配下にメール送信用のメソッドが作成され、
app/views/メーラー名配下にメールの文言ファイルが作成されます。

通常のテキストメール送信に加え、HTMLメールが送信できたり、
添付ファイルをつけたりと、様々なオプションを取ることができます。


使用方法

まずメイラーを作成していきます。
メイラーを作成するとコントローラと同様、ビューとテストファイルも自動で生成されます。

$ rails generate mailer UserMailer welcome_email

メイラーを編集していきます。

(app/mailers/user_mailer.rb)

class UserMailer < ApplicationMailer
  default from: 'user@example.com'      # ①

  def welcome_email          # ②
    @user = params[:user]
    @url  = 'hoge_path'
    mail(to: user.email, subject: 'welcome')  # ③
  end
end

①共通の処理・設定を記述する場合にはdefaultメソッドを使用します。
ここで使っているfrom:はメールの送信元名です。
この値はメールごとに上書きすることも可能です。

②コントローラと同様、メソッドを定義することができます。
メイラーのメソッド内で定義されたすべてのインスタンス変数はそのままビューで使えます。

③mailメソッド。実際のメールに使うメッセージです。
ここでは:to(宛先)と:subject(件名)を渡しています。
mailメソッドでは通常のメールと同じように
cc、bccなどのメールの送信先アドレスを指定可能です。


メイラービューを作成します。
まずHTMLでフォーマットされたメールテンプレートにします。

(app/views/user_mailer/welcome_email.html.erb)

<h1><%= @user.name %></h1>
<p><%= @url %>をクリックしてください。</p>
<p>ご入会ありがとうございます。</p>

次に同じ内容のテキストメールも作成します。

(app/views/user_mailer/welcome_email.text.erb)

<%= @user.name %>様
===============================================

<%= @url %>をクリックしてください。

ご入会ありがとうございます。

※ HTMLメールとテキストメールの違い HTMLメールではWebページのように文字のフォントや色、
大きさを変えることができるだけでなく、画像や動画を入れることもできます。
テキストメールはテキスト形式で作成されたメールのことです。


メールの設定を記述しただけではメールは送信できません。
メイラーは各コントローラのアクションからの呼び出しによって起動します。


letter_opener_webのgemを使用

letter_opener_webというメールの確認を開発環境、テスト環境で行うためのgemをGemfileに追加してbundle installを行います。

group :development, :test do
  gem 'letter_opener_web'
end

開発環境でこの機能を使いたい時はconfig/environments/development.rbに以下のコードを追加します。

config.action_mailer.default_url_options = { host: 'localhost:3000' }
config.action_mailer.delivery_method = :letter_opener_web

そしてroutes.rbファイルにletter_opener_webにアクセスするためのURLを追加します。

if Rails.env.development?
    mount LetterOpenerWeb::Engine, at: "/letter_opener"
end

ここまでの設定をして、Localhost:3000/letter_openerにアクセスすると送信されたメールを確認することが出来るようになります。

参照元

Action Mailer の基礎 - Railsガイド

【Rails入門】Action Mailerのメール送信を初心者向けに基礎から解説 | 侍エンジニアブログ