Check mail is sent successfully or not on Laravel 5

前端 未结 4 1889
遥遥无期
遥遥无期 2020-12-05 18:34

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

/**
 *  Send Mail from Parts Specification Form
 */
 public function sendMail(Request $request) {         


        
相关标签:
4条回答
  • 2020-12-05 19:19

    You can use the Mail::failures() function for that. It will have a collection of failed mails if it exists so you can use the code below to check for it.

    public function sendMail(Request $request) {
        $data = $request->all();
    
        $messageBody = $this->getMessageBody($data);
    
        Mail::raw($messageBody, function ($message) use ($messageBody) {
            $message->from('yourEmail@domain.com', 'Learning Laravel');
            $message->to('goper.zosa@gmail.com');
            $message->subject($messageBody); 
        });
    
        // check for failed ones
        if (Mail::failures()) {
            // return failed mails
            return new Error(Mail::failures()); 
        }
    
        // else do redirect back to normal
        return redirect()->back();
    }
    
    0 讨论(0)
  • 2020-12-05 19:27

    Hope this helps

    The Mail::failures() will return an array of failed emails.

    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!";
    }
    

    source : http://laravel.io/forum/08-08-2014-how-to-know-if-e-mail-was-sent

    0 讨论(0)
  • 2020-12-05 19:27

    You may additionally can make use "Swift_TransportException" to identify any errors.

    try{
    
       //code to send the mail
    
    }catch(\Swift_TransportException $transportExp){
      //$transportExp->getMessage();
    }
    
    0 讨论(0)
  • 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();
    }
    
    0 讨论(0)
提交回复
热议问题