【エラー対応】Railsでメールが送れなくなった時の解決法

どうも、三町哲平です！

夜中３時にふと手動でポートフォリオのテストをしようと思い投稿機能やログイン機能などをいじり倒していたのですがその時にアカウントの新規登録をしようと思いました。

今までだと、ユーザー名/メールアドレス/パスワード/再度パスワードを入力して新規登録するボタンを押したら、認証メールが登録したメールアドレスへ送られて、そのメールのリンクをクリックすることでユーザー登録完了な訳なのですが、なぜか今回はメールが送れない...

ちなみに出先だった為、本番環境で試していたのですが、

__新規登録する__をポチッ
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/b1d3d41b-fdd3-ef39-f19b-7545a0277c87.png)

・・・

__このページは表示できません__

ちなみにこのページは、500 Internal Server Errorの表示なので、Webサーバーに何らかの問題が発生した際のエラーになります。

今回は、このエラーの解決までをまとめました。

※新規登録は、下記の内容で登録
__ユーザー名: test
メールアドレス: f●●●●●●@rakuten.jp__


# エラーを調べよう

今回発生した500 Internal Server Errorですが、あくまでこの表示は本番環境になりますので、エラー表示はデフォルトで非表示になっています。よって詳細までは分かりません。

ここで詳細を調べようと思ったら、開発環境で試してみる事が一番なのかもしれませんが、あくまで出先で本番環境しか触れない中で試せる事といったら、似たような動きをする所を手当たり次第調べていくことになりますが、今回の事象で考えられる仮説は、

1. deviseのgemがおかしな挙動をしているのではないか？
2. メール機能が使えなくなっているのではないか？

上記の２点が思い付いたので一つずつ仮説を試していきましょう！

## 1. deviseのgemがおかしな挙動をしているのではないか？

まず、deviseの挙動がおかしくないか調べてみますが、今回やったのは、

### ① 既に登録しているアカウントでログインしてみる
![２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/e8dbecbc-e90d-288b-0154-0759c1e08f58.png)

__テストユーザー__でログインできました！

### ② 今回、新規登録したユーザーが仮登録されているか調べる
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/053831c2-0c27-2433-0762-bbccb5c38822.png)

__test(新規登録したユーザー)__が一覧に仮登録されています!

__deviseは、問題無いですね。__

## 2. メール機能が使えなくなっているのではないか？
メール機能が使えるかどうか調べるには、他にメールを使用しているところを試してみたら分かりますね。

### ① 新規登録したアカウントの確認メールを送ってみる
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/db8f9803-abd9-2a1c-a15b-f299e76c13a1.png)
__⬇︎__
![１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/428928c3-bb1e-405e-9651-7ec4156ce292.png)

エラーが発生!

### ② 今回、新規登録したユーザーが仮登録されているか調べる
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/36bd987e-f78a-51bb-8cd5-ba19044d9548.png)
__⬇︎__
![１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/7e75acfa-a2a9-70ec-731f-4e6ecc9e8251.png)

またしてもエラーが発生!

__どうも本番環境で、メールを送れなくなっているみたいです。__

## 開発環境で調べる
ここからは、自宅に帰って本番環境で行った対応と同じ対応をしましたが結果は、本番環境も開発環境も同じタイミングでエラーが発生しました。

しかし、本番環境と開発環境の大きな違いは、エラー内容を詳細に見れることです。
ちなみに今回のエラー内容の詳細は、
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/3399e7c2-b875-f35e-6dfe-8d1ab43ecb5a.png)

初めて見るエラーですね...。

とにかくわからないエラーに関しては、ググってみるに限るのでググってみました。

__535-5.7.8 Username and Password not accepted. Learn more at__で、検索

https://qiita.com/k-kou5/items/1ed178680a3a45c1edf7

https://qiita.com/gazayas/items/9fe0cce69c2785e8b1b9

上記の記事がヒットしたので、記事を参考にエラー解決を試みました。

...が、エラー解決には至りませんでした。

しかし、__Username and Password not accepted__を翻訳してみると、__ユーザー名とパスワードが受け入れられません__と日本語化されます。

ユーザー名とパスワードは、絶対登録してあるし、誤字脱字もない筈なのに...と思いポートフォリオで使用していたgmailのGoogleアカウントのセキュリティから__アプリ パスワード__の項目を見てみると、
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/63962128-a5be-d9a4-a7b0-2bed5f332ae9.png)

__なし__って書いているんですが...
つまりアプリ パスワードが登録していないことになっていました。
アプリ パスワードを消した心当たりが無いのに、何で消えているのかはこの時直ぐには分からなかったのですが、これしか考えられないということで、__アプリ パスワード__を再設定し直して、環境変数に追加後、開発環境でお問い合わせフォームを使用してみると、
![9![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/b79c908f-de47-6112-129c-04e7dcfa0e3c.png)
.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/d9475d86-c44b-43cb-c0d9-da6369716a65.png)

__お問い合わせいただきありがとうございました。__

![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/1c0d0ad0-436d-7a37-2c64-04384f2d446f.png)

__無事、お問い合わせ機能使用出来ていますね!__

### ※その他、最初の本題であった新規登録や確認メールも無事復旧しました。
新規登録をしてみましょう!
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/92bccd17-9a4c-5685-0160-a3e50ed6e4e2.png)
__⬇︎__
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/ccf4b07e-2484-e279-0744-7e5c08545cb6.png)
__本人確認用のメールを送信しました。メール内のリンクからアカウントを有効化させてください。__

出来ましたね!

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/eb4031db-f7a7-6798-7cc9-5943e21d4fc6.jpeg" width="300">
認証メールも問題無く届いていました！

この後、開発環境だけではなく本番環境でも試しましたが共に正常に動くようになりました。
良かったです。

# さいごに
メールは送れるようになりましたが、結局__なぜ一度登録していたはずのアプリ パスワードが消えていたのか!?__その問題は解決していませんが、これに関しては実はこの記事の既出画像の中にヒントががありました。

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/be4cf671-b7f8-5d47-2032-287b5e5e83bd.png)
↑一度使用したこの画像です。

![スクリーンショット 2021-06-07 0.56.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/688029/df093461-2824-c6df-32a7-40ddd7bb3199.png)
画像のこの部分です。
__前回の変更: 5月30日__

１週間前にGoogleアカウントのパスワードをセキュリティ対策の為、再設定していました。(この記事のエラー発生は、6月6日)
100%これが原因とまでは言い切れませんが、変化点と言えばここしかないのでほぼ100%でこれが原因と言って間違い無いでしょう。
次回、パスワード変更時に確認が必要ですね。

__Googleパスワードを再設定すると、アプリ パスワードが自動的に削除される。__
ひとまず解決です。