verificación de email de Laravel

verificación de email

Cómo habilitar verificación de email de Laravel y personalizar plantillas de correos

En esta publicación, habilitaremos la verificación de email y la personalización de plantillas de correo electrónico.

En el Panel de administración básico de Laravel, implementamos la mayoría de las funciones básicas.

Laravel proporciona servicios integrados para enviar y verificar la verificación de correo electrónico después del registro del usuario.

1. Configurar el correo
2. Habilite la verificación de correo electrónico en el modelo
3. Agregar middleware  verified
4. Verificación de correo electrónico con MailHog
5. Personalización del contenido del correo electrónico
6. Personalización de la plantilla de correo electrónico


1. Configurar el correo

La configuración de correo de Laravel está disponible en la ruta config/mail.php. Laravel proporciona una API de correo electrónico limpia y simple impulsada por el popular componente Symfony Mailer.

Por lo general, utilizamos diferentes servicios de correo para cada entorno. Así que agregue la siguiente configuración en el archivo .env

MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

En Larval Sail se configura con MailHog. Veremos MailHog después de la configuración de Verificación de correo electrónico.


2. Habilite la verificación de correo electrónico en el modelo

Para habilitar la verificación de email, debemos implementar Illuminate\Contracts\Auth\MustVerifyEmail en nuestro modelo de usuario

app/Models/User.php

<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable implements MustVerifyEmail
{
    use HasApiTokens, HasFactory, Notifiable, HasRoles;
 
    // ...

Ahora regístrese como nuevo usuario

Después del registro, recibí el siguiente error

Este problema se debe a que MAIL_FROM_ADDRESS es nulo. Porque actualizamos nuestro Laravel 8 a Laravel 9. En Laravel 9, este MAIL_FROM_ADDRESS no debe ser nulo. Así que agregue la dirección de correo electrónico en el .env

MAIL_FROM_ADDRESS="[email protected]"

Después de la actualización de MAIL_FROM_ADDRESS, pude registrarme y ser redirigido al tablero.

Pero los usuarios no están restringidos a ver las páginas sin verificación de email. Siguiente paso arreglamos esto.


3. Agregar middleware verified

Ahora vamos a agregar middleware verified a todas las rutas autenticadas

routes/web.php

Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware(['auth', 'verified'])->name('dashboard');

routes/admin.php

<?phpRoute::group([
    'namespace' => 'App\Http\Controllers\Admin',
    'prefix' => 'admin',
    'middleware' => ['auth', 'verified'],
], function () {   //.....

Después de agregar el software intermedio, el usuario es redirigido a la página pendiente de verificación de email. Además, esta página tiene la opción de reenviar el correo electrónico de verificación.

verificación de email


4. Verificación de email con MailHog

verificación de email

Cuando Sail se esté ejecutando, acceda a su MailHog en http://localhost:8025/

MailHog es una herramienta de prueba de correo electrónico para desarrolladores en entornos locales.

Revisa los correos electrónicos recibidos en MailHog. Ahora, haga clic en el enlace de verificación de correo electrónico. Después de la verificación, el usuario puede acceder a las páginas verified.

verificación de email


5. Personalización del contenido del correo electrónico

Laravel ofrece una opción para modificar el contenido del correo electrónico de verificación. En App\Providers\AuthServiceProvider necesita llamar toMailUsing el método desde el método de arranque.

use Illuminate\Auth\Notifications\VerifyEmail;
use Illuminate\Notifications\Messages\MailMessage;

/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
// ...

VerifyEmail::toMailUsing(function ($notifiable, $url) {
return (new MailMessage)
->subject('Verify Email Address')
->line('Click the button below to verify your email address.')
->action('Verify Email Address', $url);
});
}

6. Personalización de la plantilla de correo electrónico

Puede modificar la plantilla HTML y de texto sin formato publicando los recursos del paquete de notificación. Ejecute el siguiente comando para copiar las plantillas en sus vistas.

php artisan vendor:publish --tag=laravel-notifications

Las plantillas de notificación por correo se copiarán en la carpeta  resources/views/vendor/notifications.


Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre Laravel:

Recent Post