Я пытался получить список получателей, которые не получали электронную почту, используя функцию laravel Mail::send()
. Я пытаюсь сделать следующий код. for
цикл используется как потому, что каждый пользователь получает настроенное сообщение.Как работает функция laravel Mail :: failures()?
// First recipient is actual, the second is dummy.
$mail_to_users = ["[email protected]","dummy_acc[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
всегда возвращает пустой.
Это ничего не стоит, что только очень специфических виды отказов перенастроены из Swiftmailer: в значительной степени только неудачи в том смысле, что метод используемый для почты, отклонил адрес/адрес электронной почты. С 'SMTP' это вообще нормально, так как SMTP-сервер немедленно возвращает сбой, но что-то вроде использования sendmail редко (если вообще когда-либо) возвращает сбой, так как письма просто принимаются независимо, а затем отправляются позже. Таким образом, если вы используете 'sendmail' (или, возможно, даже' mail') в своей почтовой конфигурации, вам, вероятно, придется использовать другой способ отслеживания сбоев доставки. – alexrussell
См. Http://swiftmailer.org/docs/sending.html для документации о том, когда вы это делаете, и не получите возвращенные неудачи. – alexrussell