web-dev-qa-db-ja.com

Laravel 5でメールが正常に送信されたかどうかを確認します

これを使用してLaravel5でメールを送信できる機能があります

/**
 *  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.';
}

私はそのコードを推測しています。

12
Goper Leo Zosa

これが機能するかどうかはわかりませんが、試してみてください

/**
 *  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();
}
20
haakym

お役に立てれば

Mail::failures()は、失敗した電子メールの配列を返します。

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

14