質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

Q&A

解決済

1回答

711閲覧

devise user パスワードの再設定機能について

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

0グッド

0クリップ

投稿2022/10/20 11:28

編集2022/11/01 15:15

概要

1.パスワードを忘れた際にパスワード再設定したい。

2.パスワードの再設定を行うためにメールアドレスを入力し、再設定するリンクを載せたメールを送りたい。

3.メールが送られない。

発生している問題・エラーメッセージ

!追記
エラーは消えたが、ポップアップが出現しませんでした。
環境設定が間違っているのでしょうか?

該当のソースコード

views/users/password/new.html.erb

1<div class="container mt-5"> 2 <h2>パスワードをお忘れですか?</h2> 3 <div class="row"> 4 <div class="col-8"> 5 <%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %> 6 <%= render "devise/shared/error_messages", resource: resource %> 7 <div class="form-group"> 8 <%= f.label :email %><br /> 9 <%= f.email_field :email, autofocus: true, autocomplete: "email", class: "form-control" %> 10 </div> 11 <div class="actions"> 12 <%= f.submit "パスワード再設定メールを送る", class:"btn btn-outline-primary" %> 13 </div> 14 <% end %> 15 <%= render "devise/shared/links" %> 16 </div> 17 </div> 18</div> 19 20<%= render "users/shared/links" %>

views/users/mailer/reset_password.html.erb

1<p><%= t('.greeting', recipient: @resource.email) %></p> 2 3<p><%= t('.instruction') %></p> 4 5<p><%= link_to t('.action'), edit_password_url(@resource, reset_password_token: @token) %></p> 6<p><%= t('.instruction_2') %></p> 7<p><%= t('.instruction_3') %></p> 8

config\enviroments/development.rbの再設定に関するコード

1Rails.application.configure do 2(略) 3config.action_mailer.raise_delivery_errors = false 4 5 config.action_mailer.default_url_options = { host: 'localhost', port: 8080, protocol: 'https' } 6 config.action_mailer.delivery_method = :letter_opener 7 config.action_mailer.perform_deliveries = true 8(略) 9end

!追記
gemfileに下記を追加

gem 'net-smtp' gem 'net-imap' gem 'net-pop'

参考サイト
https://qiita.com/4ma9147/items/fc3f9fcf36572596fdf1

初めてメールに関する機能を実施するため、至らない部分やメールを送る機能に関する理解が低い部分があると思いますが、アドバイスを頂けたらなと思っております。

!追記
参考サイト
https://github.com/ryanb/letter_opener

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

追記

Ruby 3.1系、Rails6.1.5以降だとgem 'net-smtp'を導入する必要があるようです。
Rails6.1.7でテスト環境を作ったところエラーがでてletter_openerが動作しませんでしたが、上記Gemを導入することで期待通りポップアップがでてきました。

詳しくはこちらを参考にしていただくと良いかと思います。
https://qiita.com/jnchito/items/4ef331281f0050428716

イメージ説明


開発中であれば、gem 'letter_opener'か、gem 'letter_opener_web'を使って確認するのが良いかと思います。

https://qiita.com/k-shogo/items/d85905535a64e82a3b2b#letter_opener
(個人的には、letter_openerのほうが好きです。)

投稿2022/10/21 00:05

編集2022/10/31 10:33
no1knows

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/10/21 07:08

gem 'letter_opener'を試しているのですが、確認画面はどうやって確認しましたか? gem 'letter_opener'の時に確認する画面へのルーティングが書いていないので、質問させていただきました。
no1knows

2022/10/22 01:10

> Now any email will pop up in your browser instead of being sent. 公式に書いてあるとおり、「適切な設定ができていたら」自動でポップアップが出てくるようになっています。 https://github.com/ryanb/letter_opener
退会済みユーザー

退会済みユーザー

2022/10/28 13:06

すみません。 設定したのですが、エラーが発生して、エラーを検索してhostのせっていもここr見たのですが、エラーは変わりませんでした。 質問にエラー箇所とコードを載せるるので拝見して頂けたら幸いです。
no1knows

2022/10/28 23:07

開発環境であれば、Deviseの基本設定ができていないかもしれません。 > At this point, a number of instructions will appear in the console. Among these instructions, you'll need to set up the default URL options for the Devise mailer in each environment. Here is a possible configuration for > config/environments/development.rb > config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } https://github.com/heartcombo/devise
退会済みユーザー

退会済みユーザー

2022/10/29 04:20

修正したところエラーはなくなったのですが、自動でポップアップが出てきませんでした。 環境設定が悪いのでしょうか? 現在のdevelopment.rb内の設定を見てもらえませんでしょうか? 内容は質問に追記させて頂きました。
no1knows

2022/10/31 10:37

development.rbは、問題ないかと思います。 (config.action_mailer.perform_deliveries = trueは、デフォルトがtrueなので書いても書かなくてもどちらでもOKかと思います。) バージョンにもよると思うのですが、6.1.5以降の解決方法を追記させていただきました。
退会済みユーザー

退会済みユーザー

2022/11/01 03:51

Gemfileに下記の3つを追加したのですが、ポップアップが出現しませんでした。 エラーも発生していません。 gem 'net-smtp' gem 'net-imap' gem 'net-pop' rubyのバージョンなどに問題があるのでしょうか? rails -v Rails 6.1.7 ruby -v ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux]
no1knows

2022/11/01 04:14

エラーが出ていないと原因が分からないのですが、こういったとき(何が原因か判別できないといったとき)に個人的によくやっている方法をお伝えします。 一度、新しいプロジェクトを作って「その機能だけ」を実装して動作を確認するということです。 今回であれば、具体的には、Deviseとletter_openerを導入してみるといった形です。 もしきちんと動けば、既存のコードのどこかがおかしいということになりますし、動かなければ別の原因を探すといった切り分けができるはずです。 (この内容だと、たぶん10分もかからずに動作確認できると思います。)
no1knows

2022/11/01 04:14

あ、もちろんサーバーは再起動してから、動作確認をおねがいします。
退会済みユーザー

退会済みユーザー

2022/11/01 08:20

新しいプロジェクトでdeviseとletter_openerを導入して試したのですが同じ結果になってしまいました。 同じバージョンです。 ubuntu:~/environment/test01 (master) $ ruby -v ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux] ubuntu:~/environment/test01 (master) $ rails -v Rails 6.1.7
no1knows

2022/11/01 21:33

あぁ、Cloud9なんですね。使ったことがないのですが、調べたことを一度、やってみてはいかがでしょうか?
退会済みユーザー

退会済みユーザー

2022/11/02 03:55

config.action_mailer.default_url_options = { host: 'cd11-tsunageru.c9users.io:8080' } に変えてみたのですが、結果は同じでした。。。。 https://teratail.com/questions/132644?sort=1 にある、config.action_mailer.default_url_options = { host: 'cd11-名前.c9users.io:8080' }を参考にしてみたのですが、hostの書き方はおかしいでしょうか?
退会済みユーザー

退会済みユーザー

2022/11/02 04:34 編集

調べるたものを実行する前のconfig.action_mailer.default_url_options = { host: 'localhost', port: 3000 }の状態のときにターミナルのログを見たのですが、おそらくメールは表示しようとしているように見えたのですがどうでしょうか? Started GET "/users/password/new" for 113.149.158.1 at 2022-11-02 04:27:40 +0000 Cannot render console from 113.149.158.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1 Processing by Devise::PasswordsController#new as HTML Rendering layout layouts/application.html.erb Rendering users/passwords/new.html.erb within layouts/application Rendered /home/ubuntu/.rvm/gems/ruby-3.0.0/gems/devise-i18n-1.10.2/app/views/devise/shared/_error_messages.html.erb (Duration: 0.0ms | Allocations: 9) Rendered users/passwords/new.html.erb within layouts/application (Duration: 2.7ms | Allocations: 627) [Webpacker] Everything's up-to-date. Nothing to do Rendered layouts/_navbar.html.erb (Duration: 1.2ms | Allocations: 577) Rendered layout layouts/application.html.erb (Duration: 54.6ms | Allocations: 5586) Completed 200 OK in 62ms (Views: 61.1ms | Allocations: 6359) Started POST "/users/password" for 113.149.158.1 at 2022-11-02 04:27:52 +0000 Cannot render console from 113.149.158.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1 Processing by Devise::PasswordsController#create as HTML Parameters: {"authenticity_token"=>"[FILTERED]", "user"=>{"email"=>"test@test.cims.jp"}, "commit"=>"パスワード再設定メールを送る"} User Load (1.7ms) SELECT `users`.* FROM `users` WHERE `users`.`deleted_at` IS NULL AND `users`.`email` = 'test@test.cims.jp' ORDER BY `users`.`id` ASC LIMIT 1 User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`deleted_at` IS NULL AND `users`.`reset_password_token` = '01f20c93edeb6a4429d58505be713f61647db30876bfeb275212fdf1fbb447d6' ORDER BY `users`.`id` ASC LIMIT 1 TRANSACTION (0.6ms) BEGIN User Update (1.6ms) UPDATE `users` SET `users`.`reset_password_token` = '01f20c93edeb6a4429d58505be713f61647db30876bfeb275212fdf1fbb447d6', `users`.`reset_password_sent_at` = '2022-11-02 04:27:52', `users`.`updated_at` = '2022-11-02 04:27:52.452109' WHERE `users`.`id` = 1 TRANSACTION (4.1ms) COMMIT Rendering users/mailer/reset_password_instructions.html.erb Rendered users/mailer/reset_password_instructions.html.erb (Duration: 0.9ms | Allocations: 493) Devise::Mailer#reset_password_instructions: processed outbound mail in 5.8ms Delivered mail 6361f1c8766c6_cf8105b8583e3@ip-172-31-45-102.mail (3.7ms) Date: Wed, 02 Nov 2022 04:27:52 +0000 To: test@test.cims.jp Message-ID: <6361f1c8766c6_cf8105b8583e3@ip-172-31-45-102.mail> Subject: =?UTF-8?Q?=E3=83=91=E3=82=B9=E3=83=AF=E3=83=BC=E3=83=89=E3=81=AE=E5=86=8D=E8=A8=AD=E5=AE=9A=E3=81=AB=E3=81=A4=E3=81=84=E3=81=A6?= Mime-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit <p><span class="translation_missing" title="translation missing: ja.users.mailer.reset_password_instructions.greeting, recipient: test@test.cims.jp">Greeting</span></p> <p><span class="translation_missing" title="translation missing: ja.users.mailer.reset_password_instructions.instruction">Instruction</span></p> <p><a href="http://localhost:3000/users/password/edit?reset_password_token=qdi8xEb2ipwxfux7EuYj"><span class="translation_missing" title="translation missing: ja.users.mailer.reset_password_instructions.action">Action</span></a></p> <p><span class="translation_missing" title="translation missing: ja.users.mailer.reset_password_instructions.instruction_2">Instruction 2</span></p> <p><span class="translation_missing" title="translation missing: ja.users.mailer.reset_password_instructions.instruction_3">Instruction 3</span></p> Redirected to https://f3c5ff7c750c474ba358523266e7506d.vfs.cloud9.ap-northeast-1.amazonaws.com/users/sign_in Completed 302 Found in 59ms (ActiveRecord: 10.6ms | Allocations: 12960)
退会済みユーザー

退会済みユーザー

2022/11/02 12:57 編集

hostを修正して試したところ、ポップアップは出なかったのですが、 Cloud9でログのurlをクリックしたらpasswords/edit.html.erbを表示できました。 ですがポップアップでメールが表示されませんでした。 routes.rbなどで設定する必要がgem 'letter_opener'には必要ですか?
no1knows

2022/11/02 22:27

下記の動画を見るとポップアップではなく、Tempファイルで確認しているみたいですね。 https://www.youtube.com/watch?v=Ubrr9mqE94o 新しく質問を立てて「Cloud9でLetter_openerを使う場合、ポップアップを出すことはできるのでしょうか?」といった形でCloud9に知見のある方からの回答を待つのが良いかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問