Rails・deviseの自動送信メールの日本語版を作ってみた

# はじめに
検索の仕方が悪いのかもしれないのだが、deviseの自動送信メールの日本語訳の定型文が見つからなかった。
なので、自分のポートフォリオで使った定型文を記事にしようと思います。
参考になるという方がいらっしゃれば幸いです。


# 前提
- 署名に記載するURL・問い合わせメールアドレスは環境変数(dotenv-railsのGem)を利用。
- メールの件名は、「devise-i18n」「devise-i18n-views」のGemを使って日本語訳されているものとする。
- 翻訳文は直訳ではなく、日本で一般的に使われているような文面で作成しました。間違い・不足がないように心がけましたが、心優しい方は、間違い・不足の部分を発見されたらお気軽にご指摘くださると幸いです。
- 後でI18n対応というものを知ったので、この記事では本文のI18n対応はしてません。翻訳文のみ直接テンプレートファイルに記載してます。多言語対応したいという時は、下記を参照すると良いと思います。

https://qiita.com/tiktak/items/a70ef7940fa4710f37cb


# バージョン情報
- ruby 2.6.3
- rails 6.0.2


# 翻訳

deviseにプリセットされるファイルは下記の5つです。

- 会員登録の確認メール：(```confirmation_instructions.html.erb```)
- 元メールアドレスへの変更通知メール：(```email_changed.html.erb```)
- パスワードの変更完了メール：(```password_change.html.erb```)
- メールアドレスの変更確認メール：(```reset_password_instructions.html.erb```)
- アカウントロックのお知らせメール：(```unlock_instructions.html.erb```)

こちらの翻訳文を下記に記載します。


## 会員登録の確認メール
```erb:app/views/devise/mailer/confirmation_instructions.html.erb

<p>※このメールは自動送信メールです。</p>

<p><%= @email %> 様</p>

<p>「<%= ENV['APP_NAME'] %>」事務局でございます。</p>
<p>この度は「<%= ENV['APP_NAME'] %>」にご登録いただきありがとうございます。</p>

<p>下記のリンクからアカウントメールの確認をお願いいたします。</p>

<p><%= link_to 'アカウントメールの確認はこちら', confirmation_url(@resource, confirmation_token: @token) %></p>


<p>※このメールは返信しても届きません。お問い合わせはアプリを起動して「お問い合わせ」からお願いいたします。</p>

<p>
覚えがないのにこのメールが届いたという方<br>
ご迷惑をおかけし申し訳ありません。大変お手数ですが下記メールアドレスまでご連絡をお願いいたします。<br>
</p>
<p><%= ENV['MAIL_BCC'] %></p>

<p>――――――――――――――――――――――――――――――</p>
<%= ENV['APP_NAME'] %><br>
URL ： <%= ENV['WEB_PROTOCOL'] %>://<%= ENV['WEB_HOST'] %><br>
Mail ： <%= ENV['MAIL_BCC'] %><br>
<p>――――――――――――――――――――――――――――――</p>



```

## 元メールアドレスへの変更通知メール

```erb:app/views/devise/mailer/email_changed.html.erb

<p>※このメールは自動送信メールです。</p>

<p><%= @email %> 様</p>

<p>「<%= ENV['APP_NAME'] %>」事務局でございます。</p>

<% if @resource.try(:unconfirmed_email?) %>
  <p>ご登録のメールアドレスが<%= @resource.unconfirmed_email %>に変更されたことをお知らせします。</p>
<% else %>
  <p>ご登録のメールアドレスが<%= @resource.email %>に変更されたことをお知らせします。</p>
<% end %>

<p>
覚えがないのにこのメールが届いたという方<br>
ご迷惑をおかけし申し訳ありません。大変お手数ですが下記メールアドレスまでご連絡をお願いいたします。<br>
</p>
<p><%= ENV['MAIL_BCC'] %></p>

<p>――――――――――――――――――――――――――――――</p>
<%= ENV['APP_NAME'] %><br>
URL ： <%= ENV['WEB_PROTOCOL'] %>://<%= ENV['WEB_HOST'] %><br>
Mail ： <%= ENV['MAIL_BCC'] %><br>
<p>――――――――――――――――――――――――――――――</p>


```

## パスワードの変更完了メール
```erb:app/views/devise/mailer/password_change.html.erb
<p>※このメールは自動送信メールです。</p>

<p><%= @resource.email %> 様</p>

<p>「<%= ENV['APP_NAME'] %>」事務局でございます。</p>

<p>パスワードが変更されたことをお知らせいたします。</p>
<p>今後ともよろしくお願いいたします。</p>

<p>
覚えがないのにこのメールが届いたという方<br>
ご迷惑をおかけし申し訳ありません。大変お手数ですが下記メールアドレスまでご連絡をお願いいたします。<br>
</p>
<p><%= ENV['MAIL_BCC'] %></p>

<p>――――――――――――――――――――――――――――――</p>
<%= ENV['APP_NAME'] %><br>
URL ： <%= ENV['WEB_PROTOCOL'] %>://<%= ENV['WEB_HOST'] %><br>
Mail ： <%= ENV['MAIL_BCC'] %><br>
<p>――――――――――――――――――――――――――――――</p>



```

## パスワードの変更確認メール
```erb:app/views/devise/mailer/reset_password_instructions.html.erb
<p>※このメールは自動送信メールです。</p>

<p><%= @resource.email %> 様</p>

<p>「<%= ENV['APP_NAME'] %>」事務局でございます。</p>

<p>パスワードが変更されたことをお知らせいたします。</p>
<p>今後ともよろしくお願いいたします。</p>

<p>
覚えがないのにこのメールが届いたという方<br>
ご迷惑をおかけし申し訳ありません。大変お手数ですが下記メールアドレスまでご連絡をお願いいたします。<br>
</p>
<p><%= ENV['MAIL_BCC'] %></p>

<p>――――――――――――――――――――――――――――――</p>
<%= ENV['APP_NAME'] %><br>
URL ： <%= ENV['WEB_PROTOCOL'] %>://<%= ENV['WEB_HOST'] %><br>
Mail ： <%= ENV['MAIL_BCC'] %><br>
<p>――――――――――――――――――――――――――――――</p>


```

## アカウントロックのお知らせメール
```erb:app/views/devise/mailer/unlock_instructions.html.erb

<p>※このメールは自動送信メールです。</p>

<p><%= @resource.email %>様</p>

<p>「<%= ENV['APP_NAME'] %>」事務局でございます。</p>

<p>サインインの失敗回数が上限に達し、アカウントがロックされました。</p>

<p>下記のリンクをクリックすると、アカウントのロックが解除されます。</p>

<p><%= link_to 'アカウントをアンロックする', unlock_url(@resource, unlock_token: @token) %></p>

<p>
覚えがないのにこのメールが届いたという方<br>
ご迷惑をおかけし申し訳ありません。大変お手数ですが下記メールアドレスまでご連絡をお願いいたします。<br>
</p>
<p><%= ENV['MAIL_BCC'] %></p>

<p>――――――――――――――――――――――――――――――</p>
<%= ENV['APP_NAME'] %><br>
URL ： <%= ENV['WEB_PROTOCOL'] %>://<%= ENV['WEB_HOST'] %><br>
Mail ： <%= ENV['MAIL_BCC'] %><br>
<p>――――――――――――――――――――――――――――――</p>

```


# 検証方法

ページごとに自動送信メールと、検証方法を下記に記載する。

- 会員登録ページ
 - 会員登録の確認メール
- ユーザー情報編集ページ
 - パスワードの変更完了メール
 - メールアドレスの変更確認メール
 - 元メールアドレスへの変更通知メール
- ログインページ
 - アカウントロックのお知らせメール


## 会員登録ページ
1. 会員登録の仮登録を行い、「会員登録の確認メール」を送信させる


## ユーザー情報編集ページ
1. パスワード変更を行い、「パスワードの変更完了メール」を送信させる


1. メールアドレス変更を行い、「メールアドレスの変更確認メール」を送信させる
2. 「メールアドレスの変更確認メール」でアカウントのメールアドレスが変更完了した時に、「メールアドレスの変更確認メール」を送信させる

※「メールアドレスの変更確認メール」が送信されない場合は下記参照

```rb:config/initializers/devise.rb
  # ・・・ 省略

  # Send a notification to the original email when the user's email is changed.
  config.send_email_changed_notification = true # <= trueにすると、元のメールへ「メールアドレスの変更確認メール」を送信させる

  # ・・・ 省略
```


## ログインページ
1. ログインを設定した回数分失敗させ、「アカウントロックのお知らせメール」を送信させる

※失敗回数の設定は下記参照

```rb:config/initializers/devise.rb
  # ・・・ 省略

  # Number of authentication tries before locking an account if lock_strategy
  # is failed attempts.
  config.maximum_attempts = 20 #<= 20回失敗するとアカウントロックするという意味

  # ・・・ 省略
```

※アカウントロックお知らせメールが送信されない場合は下記参照

```rb:config/initializers/devise.rb
  # ・・・ 省略

  # Defines which strategy will be used to unlock an account.
  # :email = Sends an unlock link to the user email
  # :time  = Re-enables login after a certain amount of time (see :unlock_in below)
  # :both  = Enables both strategies
  # :none  = No unlock strategy. You should handle unlocking by yourself.
  config.unlock_strategy = :email # <= 「:email」にすると、「アカウントロックのお知らせメール」でアカウントを復旧できる

  # ・・・ 省略
```

# 課題・わからなかったところ
- I18n対応をすると、さらに良いのではないかと思った。次回挑戦する。


# さいごに
Deviseのメールが送信されるタイミングなど知るきっかけになった。

# 参考
[Devise.rb設定ファイル項目まとめ](https://qiita.com/linkss/items/9b005ebc2ef81a39afa2 "Qiita")