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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

800閲覧

パスワードリセットで例外が起きる

oooz

総合スコア9

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2023/01/29 15:14

前提

こんにちは。
昨日も質問をしていたのですが、再度laravelを使用してのパスワードリセット機能について質問です。
下記サイトを参考にしているのですが、controllerの「sendEmailResetPassword」部分が例外が発生するみたいで以降進みません。

メールディレクトリまでは進んで数値も取れている様なのですが、どうして例外が発生するのかわかりません。
どの様にすれば例外を回避できるのでしょうか?

参考サイト
https://takuma-it.com/laravel-password-reset/

実現したいこと

例外を回避し、メールを送信したい

該当のソースコード

public function sendEmailResetPassword(SendEmailRequest $request) { try { $user = $this->userRepository->findFromEmail($request->email); $userToken = $this->userTokenRepository->updateOrCreateUserToken($user->id); Log::info(__METHOD__ . '...ID:' . $user->id . 'のユーザーにパスワード再設定用メールを送信します。'); Mail::send(new UserResetPasswordMail($user, $userToken)); Log::info(__METHOD__ . '...ID:' . $user->id . 'のユーザーにパスワード再設定用メールを送信しました。'); } catch(Exception $e) { Log::error(__METHOD__ . '...ユーザーへのパスワード再設定用メール送信に失敗しました。 request_email = ' . $request->email . ' error_message = ' . $e); return redirect()->route('user.password_reset.email_form') ->with('flash_message', '処理に失敗しました。時間をおいて再度お試しください。'); } // メール送信完了画面への不正アクセスを防ぐためのセッションキー session()->put(self::MAIL_SENDED_SESSION_KEY, 'user_reset_password_send_email'); return redirect()->route('password_reset.email.send_complete'); }

試したこと

パスワード入力画面で入力し、以降値が入っているかなどを確認しました。

補足情報(FW/ツールのバージョンなど)

laravel9
mysql

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

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

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

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

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

yuma.inaura

2023/01/29 16:10

例外の内容を載せないんですか?
oooz

2023/01/29 20:54

すみません。知識不足で恥ずかしいのですが、例外の内容とはどういったものでしょうか?
m.ts10806

2023/01/29 21:19

>例外が発生する"みたい"で 起きてる現象を確定するのが先決と思います。 デバッグしましょう。 本当に例外が起きているならどこかに出力されているはずです。 エラーが起きているならエラー内容を。 サーバーのエラーログも確認を。 その内容を載せないことには応えようがない ・・・ということになります。
oooz

2023/01/29 23:13

お疲れ様です。 調べてみると Email "送信元のメールアドレス" does not comply with addr-spec of RFC 2822. というものが出ている様です。 日本語で表すと 「メール「送信元のメールアドレス」が RFC 2822 の addr-spec に準拠していません。」 となると思うのですが、以前「送信元のメールアドレス」部分を「””」でかこって自身のTwitterのURLを入れたのですが、同じ表記がされていました。調べてみても対処法がわからないのですが、どうすればよさそうですかね?
m.ts10806

2023/01/30 00:20

TwitterのURLはメールアドレスではないので、当然と言えば当然かと・・
oooz

2023/01/30 00:30

試しに私のgmailのアドレスも載せてみたのですが、同じ内容のエラーが出ていて… 他にもローカル環境のURLも同様の状態です。 どんなものを記述すればいいですかね?
m.ts10806

2023/01/30 00:34 編集

ちなみにエラー行数等はどうなっていますか? また、リクエストには本当に入力値は含まれていますか? バリデーションが行われていないようなので、正しく情報がいってなくてもそのまま渡されます。 問題がコントローラだけとは限らないので、他者が再現可能な程度にはコードを提示いただいた方が良いと思います。 コントローラだけでは情報の全体の流れが分からないということですね。
oooz

2023/01/30 02:01

エラーの行数はcontroller59行目の 「Mail::send(new UserResetPasswordMail($user, $userToken));」 となっているようで、やはりエラーメッセージは 「Email "送信元のメールアドレス" does not comply with addr-spec of RFC 2822.」 となっています。 バリデーション自体はRequestファイルで定義しているので、入力時には赤色でメッセージが表示される様にしています。こちらの表示も例外処理後表示はされていません。 リクエストもmailファイルのreturn前まで$this->user->emailで入力した値が取れているのを確認しています。
m.ts10806

2023/01/30 02:03

問題がコントローラだけとは限らないので、他者が再現可能な程度にはコードを提示いただいた方が良いと思います。 コントローラだけでは情報の全体の流れが分からないということですね。
oooz

2023/01/30 02:11 編集

今メールアドレスを別のものに変え、envファイルの内容も ``` MAIL_FROM_ADDRESS="送信元のメールアドレス" MAIL_FROM_NAME="送信元の名前" ``` に変えると別のエラーが出ました。 ``` Connection could not be established with host "mailhog:1025": stream_socket_client(): php_network_getaddresses: getaddrinfo for mailhog failed: nodename nor servname provided, or not known ``` これはなんでしょうか?
javahack

2023/01/30 02:39

まずは自分で調べましょう。 質問するのはその後です。
m.ts10806

2023/01/30 03:15

他者が再現可能な程度のコードを。 質問は編集できますので
oooz

2023/01/30 06:16

あれから色々検索してなんとか解決しました。 原因は.envファイル内に記述が足りないといったものでした。 下記に参考サイト貼り付けておきますので、今後この問題がわからない方の参考になればと思います。 回答くださった方ありがとうございました。 https://qiita.com/koru1893/items/e30d19ac97eac59b1e19
guest

回答1

0

自己解決

https://qiita.com/koru1893/items/e30d19ac97eac59b1e19

このサイトを参考にし解決しました。
他の方の参考になれば幸いです。

投稿2023/01/30 06:16

oooz

総合スコア9

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問