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:
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.
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter