📧 Envío de correos con Laravel Mail
Automatiza tus notificaciones y comunica con tus usuarios
El sistema Mail de Laravel te permite enviar correos electrónicos desde tu aplicación de forma sencilla y elegante. Puedes usarlo para enviar mensajes de bienvenida, restablecimiento de contraseñas, facturas o confirmaciones de compra.
Laravel se integra fácilmente con servicios de correo como Mailtrap, Mailgun, Amazon SES, y también con servidores SMTP tradicionales como Gmail.
⚙️ Configuración en el archivo .env
Antes de enviar correos, necesitas configurar tu entorno con las credenciales de tu servidor SMTP.
Abre tu archivo .env y añade lo siguiente:
.env
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=tu_correo@gmail.com
MAIL_PASSWORD=tu_contraseña
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=tu_correo@gmail.com
MAIL_FROM_NAME="Curso Laravel"
Si prefieres hacer pruebas, puedes usar Mailtrap en lugar de Gmail:
MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=tu_usuario_mailtrap
MAIL_PASSWORD=tu_contraseña_mailtrap
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=notificaciones@tusitio.com
MAIL_FROM_NAME="App Laravel"
Estos valores también pueden modificarse en config/mail.php para un control más avanzado.
📬 Creando un Mailable
Un Mailable es una clase que representa un correo electrónico. Contiene el asunto, la plantilla Blade y los datos que se enviarán.
Puedes crear un nuevo Mailable ejecutando el siguiente comando:
php artisan make:mail BienvenidaUsuario
Esto generará el archivo app/Mail/BienvenidaUsuario.php.
🧩 Ejemplo de clase Mailable
Dentro del método build() defines el asunto y la vista del correo:
app/Mail/BienvenidaUsuario.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class BienvenidaUsuario extends Mailable
{
use Queueable, SerializesModels;
public $usuario;
public function __construct($usuario)
{
$this->usuario = $usuario;
}
public function build()
{
return $this->subject('¡Bienvenido al Curso Laravel!')
->view('emails.bienvenida');
}
}
Luego crea la plantilla en resources/views/emails/bienvenida.blade.php:
resources/views/emails/bienvenida.blade.php
<h1>¡Hola {{ $usuario->nombre }}!</h1>
<p>Gracias por registrarte en nuestra plataforma de aprendizaje Laravel.</p>
<p>Estamos emocionados de tenerte a bordo. Si tienes dudas, puedes escribirnos a soporte@tusitio.com</p>
<hr>
<p>Equipo del Curso Laravel 🚀</p>
🚀 Enviar el correo desde un controlador
Una vez creada la clase y la vista, ya puedes enviar correos usando el facade Mail:
app/Http/Controllers/UserController.php
use App\Mail\BienvenidaUsuario;
use Illuminate\Support\Facades\Mail;
public function store(Request $request)
{
$usuario = User::create($request->all());
Mail::to($usuario->email)->send(new BienvenidaUsuario($usuario));
return back()->with('success', 'Usuario registrado y correo enviado.');
}
Con esto, cada vez que se registre un usuario nuevo, recibirá un correo de bienvenida automáticamente.
⚡ Enviar correos en segundo plano (colas)
Enviar correos puede tardar unos segundos, por lo que en producción es recomendable usar colas.
php artisan queue:table
php artisan migrate
Luego, cambia el envío de send() a queue():
Mail::to($usuario->email)->queue(new BienvenidaUsuario($usuario));
Ejecuta el procesador de colas:
php artisan queue:work
🧪 Simulador: vista previa de correo
Escribe un nombre y correo para ver cómo se genera el mensaje:
✅ Buenas prácticas al enviar correos
- Usa Mailtrap durante el desarrollo para evitar enviar correos reales.
- Configura correctamente las variables en
.envantes de pasar a producción. - Emplea colas con
queue()para mejorar el rendimiento. - Personaliza tus plantillas Blade con logotipos, enlaces y estilos.
- Verifica siempre los logs en
storage/logs/laravel.logante errores de conexión SMTP.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias