如何在Laravel中重新发送电子邮件链接功能 [英] How to make resend email link function in Laravel

查看:131
本文介绍了如何在Laravel中重新发送电子邮件链接功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我具有此功能,该功能几乎可以注册用户laravel auth的默认值,并且我添加了此发送电子邮件功能.但是,现在我想知道如何创建一个函数,如果他们单击重新发送链接",例如,如果他们第一次没有收到,就会再次发送电子邮件.

I have this function that registers users pretty much the default from laravel auth, and i added this send email function. But now im wondering how can i make a function that will send again email if they click "resend link" for example if they didnt recieve the first time.

使用发送电子邮件注册功能:

 protected function create(array $data)
    {
        $user = Account::create([
            'login' => $data['login'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
            'verifyToken'=> Str::random(40),
            'active' => (env('CONFIRM_EMAIL', true)) ? 0 : 1
        ]);
        $thisUser = Account::findOrFail($user->id);
        $this->sendEmail($thisUser);
        return $user;
    }

这是sendEmail功能

public function sendEmail($thisUser){
        Mail::to($thisUser['email'])->send(new verifyEmail($thisUser));
    }

这两个功能都能正常工作,但是有时当我注册新用户时却没有获取链接,我需要从数据库中删除该链接并重新注册.

Both functions work well, but sometimes when i register new user i dont get the link i need to delete it from database and re-register it.

推荐答案

为用户设置新的验证令牌,甚至重用旧的令牌.然后再次发送电子邮件.通过电子邮件加载用户,因此不必登录.

Set new verify token on user or even reuse the old one. Then send the email again. Loading the user by email so they don't have to be logged in.

Route::post('users/verify', 'UserController@resend')

protected function resend(Request $request)
{
    $user = User::where('email', $request->input('email'))->first();
    $user->verifyToken = Str::random(40);
    $user->save();

    $this->sendEmail($user);

    return $user;
}

一个非常基本的示例表格来调用控制器.他们需要提供电子邮件,因为您也不知道要重新发送哪个用户.

A very basic example form to call the controller. They need to provide the email, as you don't know which user to resend too.

<form action=" {!! route('resendEmail') !!}" method="POST">
    <label for="email">Your email</label>
    <input type="text" id="email" name="email" value="example@email.com">
    <input type="submit" value="Submit">
</form>

这篇关于如何在Laravel中重新发送电子邮件链接功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆