Search code examples
laravelsmtplaravel-5sendmail

Check mail is sent successfully or not on Laravel 5


I have a function that can send mail on Laravel5 using this

/**
 *  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('yourEmail@domain.com', 'Learning Laravel');
        $message->to('goper.zosa@gmail.com');
        $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';
 }

and is sent successfully. But how to check if it was sent or not? Like

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

I'm just guessing that code.


Solution

  • I'm not entirely sure this would work but you can give it a shot

    /**
     *  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('yourEmail@domain.com', 'Learning Laravel');
            $message->to('goper.zosa@gmail.com');
            $message->subject('Learning Laravel test email');
        });
    
        // check for failures
        if (Mail::failures()) {
            // return response showing failed emails
        }
    
        // otherwise everything is okay ...
        return redirect()->back();
    }