2014-07-16 24 views
11

Próbuję wysłać wiadomość e-mail i pokazać ewentualne błędy. Poniższy kod wysyła wiadomość e-mail i otrzymuję ją w porządku. Problem jednak polega na tym, że kiedy sprawdzam zmienną $ sent, zwraca ona dla mnie wartość false.Laravel Mail wysyła wiadomość e-mail, ale zwraca wartość false

Czy brakuje mi tu czegoś? Może dlatego, że jest późno. Kto wie ...

$sent = Mail::send('emails.users.reset', compact('user', 'code'), function($m) use ($user) 
{ 
    $m->to($user->email)->subject('Activate Your Account'); 
}); 

if(! $sent) 
{ 
    $errors = 'Failed to send password reset email, please try again.'; 
} 

Odpowiedz

28

Metoda Mail :: send() niczego nie zwraca.

Możesz użyć metody Mail :: failure() (wprowadzonej w 4.1 I think), aby uzyskać tablicę nieudanych odbiorców, w kodzie wyglądałoby to tak.

Mail::send('emails.users.reset', compact('user', 'code'), function($m) use ($user) 
{ 
    $m->to($user->email)->subject('Activate Your Account'); 
}); 

if(count(Mail::failures()) > 0){ 
    $errors = 'Failed to send password reset email, please try again.'; 
} 
+0

Dzięki za pomoc! Podczas przeszukiwania widziałem różne sposoby i domyśliłem się, że założyłem, co robię właściwie. Dzięki! –

+0

Czy nie ma z tym problemu, ponieważ instrukcja if jest po poleceniu mail :: send i zanim wywołanie zwrotne przekazane do Mail :: send zostanie wykonane i jest to faktyczna część kodu, który wysyła wiadomość e-mail? –

+1

Przepraszam za spóźnioną odpowiedź, jakoś tęskniłem za pytaniem. Myślę, że możesz być trochę zdezorientowany (ostatnio kodowałeś dużo JS?) - Oddzwanianie będzie zawsze wykonywane przed instrukcją if, nie jest to nazywane asynchronicznie. – judereid

Powiązane problemy