Enviar mensajes de verificación de email del usuario en Laravel

- Andrés Cruz

In english
Enviar mensajes de verificación de email del usuario en Laravel

Los mensajes de confirmación son correos que se envían a un cliente al completar una acción para confirmar la operación realizada, por ejemplo, el cambio de una contraseña, recuperar un usaurio, la compra de un producto, etc, esto en cualquier sistema web que incluye alguna interacción con el usuario, es una tarea fundamental, por lo tanto, aprenderemos a enviar correos desde Laravel.

En Laravel, tenemos acceso a una función que podemos utilizar para confirmar el registro de un usuario.

Mandar mensajes de confirmación de manera programática

Desde una instancia del usuario, tenemos acceso a una funcion que envia el email de confirmación para verificar un usuario por el email:

$user->sendEmailVerificationNotification();

Por supuesto, para esto debes de tener configurado tu servidor SMTP para el envio de correos.

Y recuerda implementar en tu modelo de usuarios la clase MustVerifyEmail:

use Illuminate\Contracts\Auth\MustVerifyEmail;
***
class User extends Authenticatable implements MustVerifyEmail

Ya con esto, puedes hacer uso de la función anterior; al usarla, llegará un correo como el siguiente:

Confirmar email

Extra: Rest Api para los usuarios a verificar

Por aqui te dejo un uso común de esta función sobre una Rest Api para registrar usuarios y verificar los mismos; tenemos una función exclusiva para mandar los emails de verificación de los usuarios:

class UserController extends Controller
{
    /**
     * Register
     */
    public function register(Request $request)
    {
        $validator = Validator::make($request->all(), StoreUser::myRules());
        if ($validator->fails())
            return $this->errorResponse($validator->errors(), 422);
        try {
            $user = new User();
            $user->name = $request->name;
            $user->email = $request->email;
            $user->password = Hash::make($request->password);
            $user->save();
            if ($request->subscribed) {
                Subscribe::create(['email' => $request->email]);
            }
            $success = true;
            $message = 'User register successfully';
        } catch (\Illuminate\Database\QueryException $ex) {
            $success = false;
            $message = $ex->getMessage();
        }
        // response
        $response = [
            'success' => $success,
            'message' => $message,
        ];
        $credentials = [
            'email' => $request->email,
            'password' => $request->password,
        ];
        Auth::attempt($credentials);
        $user->sendEmailVerificationNotification();
        return $this->successResponse($response);
    }
    public function verifie()
    {
        $user = Auth::user() ?? auth('sanctum')->user();
        $userModel = User::find($user->id);
        $userModel->sendEmailVerificationNotification();
        return $this->successResponse("ok");
    }

Como ves, tenemos una función de registrarse, en la cual obtenemos los datos del usuario y una vez registrado, iniciamos sesión con sendEmailVerificationNotification y enviamos el correo con la función explicada en esta entrada.

Y una funcion de verificar para que la ejecutes de manera programatica; en este ejemplo, estamos empleando una Rest Api en Laravel con Laravel Sanctum con tokens, pero puedes emplear cualquier tipo para verificar cuentas de usuario.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.