2015-10-01 3 views
7

У меня есть функция, которая может отправить почту на Laravel5 с помощью этогоПроверить почту успешно или не отправляется на Laravel 5

/** 
* Send Mail from Parts Specification Form 
*/ 
public function sendMail(Request $request) { 
    $data = $request->all(); 

    $messageBody = $this->getMessageBody($data); 

    Mail::raw($messageBody, function ($message) { 
     $message->from('[email protected]', 'Learning Laravel'); 
     $message->to('[email protected]'); 
     $message->subject('Learning Laravel test email'); 
    }); 

    return redirect()->back(); 
} 

/** 
    * Return message body from Parts Specification Form 
    * @param object $data 
    * @return string 
    */ 
private function getMessageBody($data) { 

    $messageBody = 'dummy dummy dummy dummy'; 
} 

и успешно отправлено. Но как проверить, отправлено ли оно или нет? Как

if (Mail::sent == 'error') { 
echo 'Mail not sent'; 
} else { 
echo 'Mail sent successfully.'; 
} 

Я просто догадываюсь, что код.

+0

Пытались ли вы 'Mail :: failures()' – haakym

+0

@haakym, как изменить свой код, чтобы увидеть, работает ли это или нет. ? Чтобы запустить этот метод? Спасибо –

+0

Помогает ли это? http://stackoverflow.com/questions/24772531/laravel-mail-sending-email-but-returning-false – haakym

ответ

10

Я не совсем уверен, что это будет работать, но вы можете дать ему выстрелило

/** 
* Send Mail from Parts Specification Form 
*/ 
public function sendMail(Request $request) { 
    $data = $request->all(); 

    $messageBody = $this->getMessageBody($data); 

    Mail::raw($messageBody, function ($message) { 
     $message->from('[email protected]', 'Learning Laravel'); 
     $message->to('[email protected]'); 
     $message->subject('Learning Laravel test email'); 
    }); 

    // check for failures 
    if (Mail::failures()) { 
     // return response showing failed emails 
    } 

    // otherwise everything is okay ... 
    return redirect()->back(); 
} 
+0

Я не думаю, что существует эквивалентный метод для количества успехов? 'Mail :: successes()' выдает ошибку с 'Call to undefined method'. – trysis

+0

https://laravel.com/api/5.2/Illuminate/Mail/Mailer.html нет. Просто сделайте количество получателей минус количество сбоев, и вы получите свой успех. – haakym

4

Надеется, что это помогает

Mail::send(...) 

if(count(Mail::failures()) > 0) { 

    echo "There was one or more failures. They were: <br />"; 

    foreach(Mail::failures as $email_address) { 
     echo " - $email_address <br />"; 
    } 

} else { 
    echo "No errors, all sent successfully!"; 
} 

Источник: http://laravel.io/forum/08-08-2014-how-to-know-if-e-mail-was-sent

+1

По крайней мере, источник ответа;) http://laravel.io/forum/08-08-2014-how-to-know-if-e-mail-was-sent – haakym

+1

извините за отсутствие упоминание это .. –

Смежные вопросы