Validación de correo electrónico en Laravel con la regla de validación email

  • Publicado el 12 febrero, 2025
  • Palabras: 251

¿Necesita más control sobre la validación de correo electrónico? La nueva regla de validación email proporciona una forma fluida y extensible de validar direcciones de correo electrónico con requisitos precisos.

Validación de correo electrónico en Laravel con la regla de validación email

#Uso básico

La validación de correo electrónico suele requerir distintos niveles de rigurosidad, desde la comprobación básica del formato hasta la verificación de DNS y la prevención de suplantación de identidad. La nueva regla de validacion email de Laravel simplifica este proceso al proporcionar una interfaz fluida que hace que las reglas de validación sean más legibles y fáciles de mantener. Veamos cómo funciona:

 

use IlluminateValidationRule;

$request->validate([
    'email' => ['required', 'string', Rule::email()->strict()->dns()]
]);

 

#Ejemplo práctico

A continuación se muestra cómo puede implementar reglas de validación de correo electrónico personalizadas para diferentes tipos de usuarios:

 

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        Email::macro('employee', function () {
            return Email::default()
                ->strict()
                ->dns()
                ->rules('ends_with:@company.com,@subsidiary.com');
        });

        Email::macro('client', function () {
            return Email::strictSecurity()
                ->rules('not_ends_with:@competitor.com');
        });

        Email::macro('enterprise', function () {
            return Email::default()
                ->dns()
                ->spoof()
                ->filter()
                ->rules('ends_with:@verified-domains.com');
        });
    }
}

class RegistrationController extends Controller
{
    public function store(Request $request)
    {
        $request->validate([
            'personal_email' => ['required', Rule::email()->strict()],
            'work_email' => ['required', Email::employee()],
            'billing_email' => ['required', Email::enterprise()]
        ]);

        // Registration logic
    }
}

 

La regla de validación email aporta varias ventajas sobre la validación tradicional basada en arrays. Proporciona una interfaz más intuitiva para combinar reglas de validación, hace que el código sea más legible y permite una extensión sencilla a través de macros. Esto es particularmente útil cuando se trabaja con diferentes requisitos de validación de correo electrónico en toda la aplicación.

Piense en ello como bloques de construcción para la validación de correo electrónico: puede mezclar y combinar diferentes aspectos de validación (verificaciones de DNS, prevención de suplantación, modo estricto) mientras mantiene un código limpio y comprensible. Esto se vuelve especialmente valioso cuando:

 

  • Gestiona diferentes requisitos de validación de correo electrónico para diferentes tipos de usuarios
  • Implementa reglas de validación personalizadas para dominios específicos
  • Garantiza medidas de seguridad como verificaciones de DNS y suplantación
  • Crea patrones de validación reutilizables en toda la aplicación


Por ejemplo, en lugar de recordar qué combinación de elementos de array crea la validación más segura, puede simplemente usar Email::strictSecurity() y saber que está obteniendo el nivel más alto de validación.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Artículos relacionados

Formato, validación y casting de teléfonos en Laravel
349

Formato, validación y casting de teléfonos en Laravel

Cómo proteger la carga de archivos: dominar la validación de tipos de archivos en Laravel
2020

Cómo proteger la carga de archivos: dominar la validación de tipos de archivos en Laravel

Validación única de Laravel para múltiples columnas
193

Validación única de Laravel para múltiples columnas

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión