Correo Electrónico No Se Envía
Solución de problemas paso a paso para problemas de entrega de correo electrónico.
Paso 1: Comprobar los Fundamentos
# Comprobar la configuración SMTP en .env
grep MAIL_ .env
Verifica:
MAIL_MAILER=smtp(nologninull)MAIL_HOSTes correctoMAIL_PORTes correcto (587 para TLS, 465 para SSL)MAIL_USERNAMEyMAIL_PASSWORDestán completadosMAIL_ENCRYPTION=tls(ossl)
Paso 2: Probar mediante el Panel de Administración
- Ve a Admin → Configuración → Email
- Haz clic en Enviar Correo de Prueba
- Comprueba el mensaje de error si falla
Paso 3: Probar mediante la Línea de Comandos
php artisan tinker
Mail::raw('Test', function ($m) {
$m->to('[email protected]')->subject('Test');
});
Comprueba storage/logs/laravel.log en busca de errores.
Problemas Comunes
| Problema | Solución |
|---|---|
| "Connection timed out" | El puerto 587/465 está bloqueado por el alojamiento. Prueba el puerto 2525 o contacta con el proveedor. |
| "Authentication failed" | Usuario/contraseña incorrectos. Para Gmail, usa la Contraseña de Aplicación. |
| "Certificate verify failed" | PHP antiguo. Prueba 'verify_peer' => false en las opciones del mailer en config/mail.php. |
| Los correos van a spam | Agrega registros DNS de SPF, DKIM y DMARC. |
| Correos con retraso | ¿Usas QUEUE_CONNECTION=database? Asegúrate de que el trabajador de cola esté funcionando. |
| Sin error pero sin correo | ¿Usas MAIL_MAILER=log? Los correos se están registrando, no enviando. Comprueba storage/logs/laravel.log. |
Usar MAIL_MAILER=log para Depuración
Establece MAIL_MAILER=log en .env para capturar todos los correos electrónicos en el archivo de registro en lugar de enviarlos. Útil para verificar el contenido del correo sin afectar a destinatarios reales.