laravel Mail::send()
関数を使用してメールを受信しなかった受信者のリストを取得しようとしています。次のコードを試しています。for
ループは各ユーザーがカスタマイズされたメッセージを受信するために使用されます。
// First recipient is actual, the second is dummy.
$mail_to_users = ["[email protected]","[email protected]"];
$failures = [];
foreach($mail_to_users as $mail_to_user) {
Mail::send('email', [], function($msg) use ($mail_to_user){
$msg->to($mail_to_user);
$msg->subject("Document Shared");
});
if( count( Mail::failures() ) > 0 ) {
$failures[] = Mail::failures()[0];
}
}
print_r($failures);
私はすべての可能なオプションを試してきました。 config/mail.php
の正しいメール設定を間違ったものに変更しました。しかし、これを行うと、laravelはエラーページを表示しますが、$failure
変数は常に空を返します。
メールが実際に受信者に届いたかどうかを確認する方法はないと思います。電子メールが有効である限り(ダミーであっても)、trueを返します。ただし、Mail :: failedures()の代わりに、次のようにtrycatchブロックを使用できます。
foreach ($mail_to_users as $mail_to_user) {
try {
Mail::send('email', [], function($msg) use ($mail_to_user) {
$msg->to($mail_to_user);
$msg->subject("Document Shared");
});
} catch (Exception $e) {
if (count(Mail::failures()) > 0) {
$failures[] = $mail_to_user;
}
}
}