Laravel で複数のメールアドレスへの送信処理を書いた時、メール送信が失敗したアドレスの一覧を取得したかったが、ドキュメントには載っていなかったのでメモとして残しておく。
環境
Laravel 6.X
やり方
Mail::failures()
で送信失敗メールアドレスが配列で取得できる。(参考)
例えば、Mailable クラスの設定後、送信処理をコントローラに書く場合、下記のような感じ。
MailSendController.php
namespace App\Http\Controllers;
use App\Mail\SampleMailableClass;
use Illuminate\Support\Facades\Mail;
use Illuminate\Http\Request;
use Log;
class MailSendController extends Controller
{
public function send()
{
$emails = ['hoge@example.com', 'huga@example.com']
Mail::to($emails)->send(new SampleMailableClass());
if (count(Mail::failures()) > 0) {
Log::channel('slack')->warning(Mail::failures());
};
}
}
Slack へのログ投稿の方法は こちらの記事 に詳しく書かれていました。