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

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

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

SendGridは、米SendGrid社のクラウド型メール配信サービス。アカウントを作成するだけですぐに利用することが可能です。さらに到達率向上のための送信ドメイン認証対応や、柔軟性のあるスケーラビリティなど多くの機能を有します。

Laravel

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

Q&A

解決済

1回答

2262閲覧

キューに入れたメールの送信失敗したときのcatch方法

poteto4401

総合スコア57

SendGrid

SendGridは、米SendGrid社のクラウド型メール配信サービス。アカウントを作成するだけですぐに利用することが可能です。さらに到達率向上のための送信ドメイン認証対応や、柔軟性のあるスケーラビリティなど多くの機能を有します。

Laravel

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

0グッド

0クリップ

投稿2021/01/09 11:09

コマンドでメール送信を実行しています。

php

1class SampleCommand extends Command 2{ 3 // ... 4 5 public function handle() 6 { 7 foreach ($emails as $email) { 8 try { 9 Mail::mailer('sendgrid') 10 ->to($email) 11 ->send(new SampleMail($email)); 12 } catch (\Exception $e) { 13 Log::warning($e->getMessage()); 14 } 15 } 16 17 return 0; 18 } 19}

ShouldQueueをimplementsしてキューに入れています。

php

1class SampleMail extends Mailable implements ShouldQueue 2{ 3 // ... 4}

キューから取り出されたメール送信処理が実行されたとき、送信に失敗した場合はどのようにしてcatchできますでしょうか?
失敗時に以下のようなエラーを出力しないようにしたいと考えています。

php

1"message":"Address in mailbox given [******@docomo.ne.jp] does not comply with RFC 2822, 3.6.2."

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

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

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

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

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

guest

回答1

0

ベストアンサー

おそらくJobと同じなのでMailableクラスにfailed()を書けばいい。

public function failed(Throwable $exception) { // 失敗の通知をユーザーへ送るなど… }

https://readouble.com/laravel/8.x/ja/queues.html

SendQueuedMailable.phpから先は追えなかったけどMailableにfailed()があれば実行されてる。

public function failed($e) { if (method_exists($this->mailable, 'failed')) { $this->mailable->failed($e); } }

https://github.com/laravel/framework/blob/74bb56ad68737ee76b11e21bc51c192149a63e43/src/Illuminate/Mail/SendQueuedMailable.php#L75

投稿2021/01/09 12:11

kawax

総合スコア10377

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問