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

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

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

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

4608閲覧

laravelでお問い合わせフォームを作っています。 入力いただいたメールアドレスが存在しないときの処理を教えて下さい。

dokuringo_ao

総合スコア7

PHP

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/08/05 10:28

laravelを使って、お問い合わせフォームを作成しています。
フォームに入力頂いたデータをDBに保存して、
入力頂いた相手と、運営者側に自動でメールが届くようになりました。
その後、エラーに対する処理をしていたところ、
フォームに入力いただいた、メールアドレスが存在しないときにエラーが出ます。

エラーが出たときにtyr catchなどで、エラーをキャッチして別の処理をしたいのですが、
エラーを捕まえることが出来ません。

1日、調べていたのですが、どこから調べていいのかわからなくなってしまいしました。
お忙しい中、恐縮なのですが、ご教授いただけましたら幸いです。

よろしくお願いいたします。

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

Swift_TransportException (553) Expected response code 250 but got code "553", with message "553 5.1.8 <asdfasd@asdfas.ads>... Domain of sender address asdfasd@asdfas.ads does not exist "

該当のソースコード

laravel

1 public function complete(ContactRequest $request){ 2 $input = $request->except('action'); 3 4 if($request->action == '戻る'){ 5 return redirect()->action('ContactController@index')->withInput($input); 6 } 7 8 if(isset($request->type)){ 9 $request->merge(['type' => implode(',',$request->type)]); 10 } 11 12 Contact::create($request->all()); 13 14 $request->session()->regenerateToken(); 15 16 // 送信メール 17 \Mail::send(new \App\Mail\Contact([ 18 'to' => $request->email, 19 'to_name' => $request->name, 20 'from' => 'info@etc.jp', 21 'from_name' => '名前', 22 'subject' => 'お問い合わせありがとうございました。', 23 'type' => $request->type, 24 'tel' => $request->tel, 25 'body' => $request->body 26 ])); 27 28 // 受信メール 29 \Mail::send(new \App\Mail\Contact([ 30 'to' => 'info@etc.jp', 31 'to_name' => 'MySite', 32 'from' => $request->email, 33 'from_name' => $request->name, 34 'subject' => 'サイトからのお問い合わせ', 35 'type' => $request->type, 36 'tel' => $request->tel, 37 'body' => $request->body 38 ], 'from')); 39 40 41 return view('contact.complete'); 42 43 }

試したこと

メールを送信するときにエラーが発生していると思い、
Mail::sendのところで、try catchなどしてもすべて通り抜けてしまいます。

try{
// 送信メール
\Mail::send(new \App\Mail\Contact([
'to' => $request->email,
'to_name' => $request->name,
'from' => 'info@ets.jp',
'from_name' => 'gnamgnam',
'subject' => 'お問い合わせありがとうございました。',
'type' => $request->type,
'tel' => $request->tel,
'body' => $request->body
]));
}catch (\Swift_TransportException $STe) {
return view('contact.complete');
}catch(\Exception $e){
return view('contact.complete');
}

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

環境は下記です。

Laravel Framework 5.8.28
XAMPP 7.2.14

お手数をおかけいたしますが、よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

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

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

dokuringo_ao

2019/08/05 14:24

ありがとうございます(´;ω;`) 確認させていただきます!!
guest

0

まず問題を履き違えております。

存在しないメールアドレスに送ったからエラーになったのではありません
存在しないドメインにメールからメールを送ろうとしている事が問題のようです。

Domain ofsender address asdfasd@asdfas.ads does not exist

senderって書いてありますからね。

そもそも自分で管理していないメールアドレスを送信元にしてメールを送信するのがまずいと思うので
返信を楽にできるようにしたいという意図であればReply-toの方がいいのでは?

投稿2019/08/05 10:49

mikkame

総合スコア5036

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

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

dokuringo_ao

2019/08/05 13:41

ご連絡いただきまして、ありがとうございます。 なにか、取っ掛かりができました。 もう一度、調べてみます!
dokuringo_ao

2019/08/05 13:53

送信を楽にしたいわけではなく、お問い合わせいただいた、方にも確認メールを送りたいので、 入力いただいたメールアドレスへ送っています。 その際に、意図的にしろ無意識にしろ、間違っていたときに、処理を加えたいのですが、どうやって、エラーを取得すればいいのか分かりません。 申し訳ございません、教えていただけましたら、助かります。
mikkame

2019/08/05 14:25

間違ったメールアドレスを入力された場合に 間違っているとその場で判断する事は困難です。 ですので皆さん、確認メールを飛ばしたりして、メールアドレスの存在確認をしているのです。 今回、メール関係でエラーが出てるのは送信元メールアドレスに存在しないドメインが書かれているという事で存在するメールアドレスが云々とは別問題かと思います (厳密に言えば到達不能アドレス通知を受け取ったりすれば出来なくはないが非同期だし、それをやるならmailprocしないといけないし、それだとレンタルサーバとかじゃ難しいし、sendmailとかamazon sesとかで非同期に処理することも出来るだろうけど)
dokuringo_ao

2019/08/06 01:15

丁寧に教えていただきまして、ありがとうございます! 送信したときに、エラーを確認に出来るように頑張ってみます! お忙しい中、教えていただきまして、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問