How to send activation email/code using cartalyst sentinel using laravel 5.4

1.1k views Asked by At

I want to send activation email/code to their emails during signup procedure but I am unable to find suitable answer that help me to complete my work.

This is my controller method where i am saving user data into my database using sentinel.

public function postRegister(Request $request)
{
    $user = Sentinel::registerAndActivate($request->all());
    return redirect('/');
}

Here i want to sent activation email/code to their email when user signup.

Your any help would be highly appreciated!

                     public function postRegister(Request $request)
{
    $user = Sentinel::register($request->all());
    $activation = Activation::create($user);

    $this->sendEmail($user, $activation->code);
    return redirect('/');
}

private function sendEmail($user,$code)
{
    Mail::send('emails.activation',[

            'user' => $user,
            'code' => $code
    ], function($message) use ($user){
        $message->to($user->email);
        $message->subject("Hello $user->first_name,
        activate your account.");
    });
}
1

There are 1 answers

1
Masad Ashraf On

Use this code
use MAIL namespace in your controller moreover don't forget to create email.verify blade in your application path resources\views\email and create smtp detail in .env file.

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=username
MAIL_PASSWORD=password
[email protected]
MAIL_FROM_NAME=YOURNAME
MAIL_ENCRYPTION=null

public function postRegister(Request $request)
    {
        $verification_code = 111111;   // create random number & save it to db ;
        $user = Sentinel::registerAndActivate($request->all());
        return redirect('/');

        $subject = "Please verify your email address.";
        Mail::send('email.verify', ['name' => $user->name, 'verification_code' => $verification_code],
            function ($mail) use ($user, $subject) {
                $mail->from(getenv('FROM_EMAIL_ADDRESS'), "YOUR APPLICATION NAME");
                $mail->to($user->email, $user->name);
                $mail->subject($subject);
            });
    }

this is your email.verify blade :

<!DOCTYPE html>
<html lang="en-US">
<head>
    <meta charset="utf-8">
</head>
<body>

<div>
    Hi {{ $name }},
    <br>
    Thank you for creating an account with us.
    <br>
    Your verification code : <b>{{$verification_code}}</b>
    <br/>
</div>

</body>
</html>