【问题标题】:Displaying custom error when sending Laravel email发送 Laravel 电子邮件时显示自定义错误
【发布时间】:2019-01-11 23:07:50
【问题描述】:

当第二个发送函数中提供的电子邮件正确 $cm1['email'] 时,下面的代码可以完美运行,但是,当用户输入一个不工作的电子邮件时,Laravel 会显示错误页面并且我写的条件是重定向( '/cm') 与错误消息不起作用。所以我的问题是,当发送电子邮件时发生错误而不是显示错误时,如何让 Laravel 将用户重定向到带有错误闪烁消息的页面。

     Mail::send('email_contact', ['data' => $cm1], function ($message)
    {

        $message->from('noreply@mydomain.com', 'No Reply');
        $message->to('rec@gmail.com');

    });

    Mail::send('email_rec', ['data' => $cm1],function ($message) use ($cm1) {

        $message->from('noreply@mydomain.com', 'No Reply');
        $message->to( $cm1['email']);

    });
    if( count(Mail::failures()) > 0 ) {
        return redirect('/cm')->with('flash_message','<strong> Something went wrong! </strong> The entered email seems to be invalid Received');
    }

    return redirect('/cm')->with('flash_message','<strong> Thank You! </strong> Your Inquiry Has Been Received');

【问题讨论】:

    标签: php laravel email laravel-5.6 laravel-mail


    【解决方案1】:

    您可以在 app/Exceptions/Handler.php 文件中进行更改,如下所示。 也许这会解决你的问题。

    public function render($request, Exception $e)
    {
    
        if ($this->isHttpException($e)) {
            switch ($e->getStatusCode()) {
    
                // not authorized
                case '403':
                    return \Response::view('errors.'.$e->getStatusCode(), [],403);
                    break;
    
                // not found
                case '404':
                    return \Response::view('errors.403', [],404);
                    break;
    
                // not found
                case '405':
                    return \Response::view('errors.403', [],405);
                    break;
    
                // internal error
                case '500':
                    return \Response::view('errors.403',[],500);
                    break;
    
                default:
                    return $this->renderHttpException($e);
                    break;
            }
        }elseif ($request->ajax()) {
            return response()->json(['message' => "Something want wrong.!!"]);
        }elseif ($e instanceof QueryException){
            return back();
        }elseif ($e instanceof PDOException){
            return back();
        }
        else {
            return parent::render($request, $e);
        }
    }
    

    在视图中你可以设置你的视图文件来渲染

    【讨论】:

    • 感谢您的回复,但实际上我正在从表单中获取数据并将它们用于 1) 向我自己发送电子邮件,2) 向用户。但是当用户输入无效的电子邮件时会出现问题,因此 laravel 卡住并显示错误。我不想显示错误页面,而是想将用户转移回表单并显示 Flash 消息以再次检查他的电子邮件。而且我不想更改整个 500 错误消息返回。
    猜你喜欢
    • 2021-01-05
    • 2016-09-06
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多