ミニカーコレクションSNSサービス開発③▶️開発40日目
意見箱の設置とメールボックス連携
今開発している皆さんから色々なサービス改善の声などをいただけたら嬉しい『意見箱』は、Web上でメッセージを送信し、自分が普段使っているメールボックスで受信する方法を採用しています。
開発手順としてはLaravel上でメールを送信するファイルの記述を色々調べながら実装し、.envファイルに自分が使いたいメール(Gmailや任意のメーラーなど)の仕様を記述するという流れです。ホストやポートナンバー、受信させたいメールアドレスや連携に必要なパスワードなどです。今回はGmailを使おうと思います。
ようやくLaravel上の動きが完成し、.envファイルを書き換えて、いざメッセージを受信しようとしても一向にメールボックスに受信されません。この事象をググっても自分のGoogleアカウントの設定からパスワードを設定するとの記事がたくさん出ますが、そもそも自分のアカウントには本来あるはずのパスワードを生成するボタンが存在していない….。
しばらく調べてみると、どうやらここ一年以内で(2024年のどこかのタイミングから?)Googleアカウント内から他のWebプロダクトと連携させるためのパスワード生成ボタンが無くなったらしいことが分かりました。グーグルの仕様変更は仕方ないので、もっと早く作っておけばよかったと悔しく思ってたそんな中、ようやく解決できそうな方法を発見。
各自のGoogleアカウント内から以下のGoogleのリンク先に直接アクセスし、App passwordsというところから外部連携用のパスワードを生成できるようです。
ここで生成したパスワードを.envファイル内に記述します。以下の画像内のMAIL_PASSWORD= のところですね。少し注意が必要なポイントは、パスワード生成後、Googleの画面上に半角スペースが混じったパスワードの文字列で表示されていたので、一度半角スペースを除去した後に、以下の.envファイルのMAIL_PASSWORD= に記述しました。
.envファイルに上記の設定を記述後Laravelからメッセージを送信してみると、無事Gmailのメールボックスで受信できていることを確認しました。
無事メールとして受信することができました!
当初考えていた手法は、phpmyadminにメッセージデータを受信し、csv形式などでエクスポートしてExcelで確認しようかなと思ったのですが、メールで受信させる方が開発が早そうだったことと、csvで吐き出すと文字化けしたり、その対応で少し時間がかかりそうだったのでメールで確認する方式にしました。また、メールの方が頂いたメッセージの整理がしやすそうだったのも理由でした。少し運用してみてやっぱりデータベースに格納した方が良さそうであれば、その時はphpmyadminに保存させる処理に変えるかもしれません。
今後の開発
次は「『いいね機能』の非同期処理の実装」の開発を進めます。
非同期処理を実装しないと、いいねボタンを押すたびにリロード処理がかかってしまいページ上部に強制的に引き戻されることと、リアルタイム感が失われてしまうので、やはり非同期処理は必要です。
スムーズで違和感ない体験を提供するために次は非同期処理の実装を進めていきます💪
今後ともミニカーオンラインディスプレイサービスの開発進捗についてやミニカー関連の記事を書いていこうと思いますので、是非とも宜しくお願いします!