繁体   English   中英

Laravel-如何检查已成功发送给用户的重置密码电子邮件?

[英]Laravel - How to check reset password email sent successfully to the user?

我的PasswordController.php具有以下函数postEmail ,并在用户尝试重置密码时调用。

/**
     * Send a reset link to the given user.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function postEmail(Request $request)
    {
        //echo Input::get('ID'); die;
        $this->validate($request, ['ID' => 'required|email']);

        // Pass data to reset password mail template
        view()->composer('emails.password', function($view) {
            $view->with([
                'UserProduct1'   => 'UserProduct1',
                'UserProduct2'   => 'UserProduct2',
            ]);
        });

        $response = Password::sendResetLink($request->only('ID'), function (Message $message) {
            $message->subject($this->getEmailSubject());
        });

        switch ($response) {
            case Password::RESET_LINK_SENT:
                return redirect()->back()->with('status', trans($response));

            case Password::INVALID_USER:
                return redirect()->back()->withErrors(['ID' => trans($response)]);
        }
    }

有什么方法可以检查,重置发送或不发送给laravel用户的laravel

任何想法?

谢谢。

如果您使用的是Laravel 5.1 Mailer类,则很容易检测是否已发送邮件

Sending Mail

<?php

namespace App\Http\Controllers;

use Mail;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Send an e-mail reminder to the user.
     *
     * @param  Request  $request
     * @param  int  $id
     * @return Response
     */
    public function sendEmailReminder(Request $request, $id)
    {
        $user = User::findOrFail($id);

        $mailSend = Mail::send('emails.reminder', ['user' => $user], function ($m) use ($user) {
            $m->from('hello@app.com', 'Your Application');

            $m->to($user->email, $user->name)->subject('Your Reminder!');
        });//Here it returns 0 if email not send

        if ($mailSend === 0)
        {
            //Your Code
        }
    }
}

在这里,当您调用Mail::send ,它将调用此方法https://github.com/laravel/framework/blob/5.1/src/Illuminate/Mail/Mailer.php#L157然后将调用sendSwiftMessage https:// github .com / laravel / framework / blob / 5.1 / src / Illuminate / Mail / Mailer.php#L388 然后它将调用swiftmailer的send方法https://github.com/swiftmailer/swiftmailer/blob/5.x/lib/classes/Swift/Mailer.php#L74&如您所见,失败时将返回$ sent变量,即如果失败,则为0。

更多https://laravel.com/docs/5.1/mail#sending-mail

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM