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

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

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

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

3回答

654閲覧

Laravelでメールの送信先を環境によって変更させたい

spell

総合スコア16

Laravel

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2020/06/08 05:57

Laravel 5.8
でメールの送信先を変更したいと思っています。

送信の際に環境によってユーザーに飛ばないようにテストを行いたいと思っています。
\Illuminate\Mail\PendingMailのtoメソッドで宛先を指定しているのですが、
テスト環境の際は hoge@hogehoge.com 本番環境の際は 実際に送信するメールアドレスにしたいのですが、
\Illuminate\Mail\PendingMailを直接弄ってしまうとupdateの際に問題が出るのは明らかなので他に方法がないか知りたいです。

app/Mail等のディレクトリを作りそこ以下にclassを作るようにして、そちらを呼び出すのがいいとは思うのですが
既に既存でPendingMailを使用しているため、呼び出し側を変更するとテストに手間がかかってしまうので出来れば避けたいと思っています。
他にもう少し手間がかからない方法はないでしょうか。

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

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

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

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

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

guest

回答3

0

https://readouble.com/laravel/5.8/ja/mocking.html

Mail Fake の項目を参照ください。

投稿2020/06/08 06:11

編集2020/06/08 06:11
phper.k

総合スコア3923

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

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

spell

2020/06/08 06:29

回答ありがとうございます。 Mail::fake(); を使用した場合は実際にメールが送信されないと理解したのですが、合っていますでしょうか? メールの送信先を一意に指定して、どのユーザー宛てののメールも指定した一意のアドレスに送信して中身を確認したいため上記のfakeを使用した場合は目的が達成出来ません。 他に方法がありましたらご教示ください。
phper.k

2020/06/08 06:31

公式に用意されているテスト方法を使用せずに、自分の都合を通したいのであれば、面倒臭くても自分で実装するしかないと思います。
phper.k

2020/06/08 06:58

App::environment() で分岐書けば済むことでしょう。
guest

0

自己解決

公式に用意されているテスト方法を使用せずに、自分の都合を通したいので自分で実装します。

投稿2020/06/08 06:58

spell

総合スコア16

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

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

0

.envに定義されては。

投稿2020/06/08 06:10

m.ts10806

総合スコア80850

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

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

spell

2020/06/08 06:33 編集

回答有難うございます。 .envに記載という事ですが、送信の際のメソッドで.envの記述を確認して置き換えるという事でしょうか? それですと送信を行っている部分全て書き換える必要が発生するので結局手間が減らないと思うのですが、 私の理解間違っていますでしょうか?
m.ts10806

2020/06/08 07:04

それはメンテナンス性最悪の望ましくない実装してるからです。 どんな言語であっても環境依存の情報は外出しした環境設定ファイルを作り、同じ名称で環境毎に値のみ変えたものを置きます。 むしろ、その環境設定ファイルの存在知らずに活用せずに作る方が手間だらけのスパゲッティコードになります。
spell

2020/06/09 02:25

元のコードの実装は私ではないので、そこは何とも仕様がない状態です。 一から作り直す訳にもいかないので、何かいい方法がないかと相談させて頂きました。
m.ts10806

2020/06/09 02:30

それは「知らない」 としか言えません。質問に出てきてる内容が全てです。
spell

2020/06/15 04:22 編集

そうですか。 しかし質問の前提条件を無視した役に立たない的外れな回答は必要ありません。 前提条件を無視した回答など「役に立たない」としか言えません。 書いてあることが全てと書きながら意図的に無視した回答は回答ではありません。 的外れな内容を指摘されたことに逆切れされても困ります。 ないなら「無い」で結構です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問