El proceso para ver el diseño de un email de nuestra aplicación en Laravel mientras desarrollamos, implica configurar un servicio externo como Mailtrap, Mailgun, Postmark, entre otros o verlo en el archivo log. Sin embargo, Laravel 5.5 nos trae una ingeniosa novedad: podremos renderizar el email en el navegador sin la ayuda de paquetes o servicios externos, simplificando el proceso de pruebas de plantillas de emails en nuestros proyectos.
Notas
Por Clemir Rondón.
Para crear un email a enviar por nuestra aplicación debemos crear una clase Mailable y para ello ejecutamos:
php artisan make:mail WelcomeUser --markdown=emails.welcome
Esta clase se crea dentro del directorio app/Mail y además crea la vista donde colocaremos el contenido del email en resources/views/emails.
Luego de crear el contenido del email para ver el resultado, tenemos que configurar la aplicación en el archivo .env bien sea para usar la opción log, servicios para envío de emails a servidores de prueba como Mailtrap o servicios para envío de emails como Mailgun, Postmark, etc.
Sin embargo, Laravel 5.5 nos trae la novedad que ya no es necesario dicha configuración ni ejecutar el envío del email usando el método send
de la clase Mailable, sino directamente desde una ruta podemos tener una vista preliminar del email en el navegador con tan solo llamar a dicha clase, de esta manera:
Route::get('email', function() { return new \App\Mail\WelcomeUser(); });
También desde la ruta podrás enviar los parámetros que sean necesarios pasándolos como argumentos a la clase Mailable. Si quieres repasar el tema de envío de emails puedes mirar nuestra lección: Enviar emails con Mailables en Laravel 5.3.
Esta mejora es gracias a que ahora la clase Mailable
implementa una nueva interfaz llamada Renderable
que veremos con más calma más adelante.
Material relacionado
- Cómo enviar emails de prueba con Mailtrap.io en Laravel
- Uso de Markdown en los Mailables en Laravel 5.4
- Enviar emails con Mailables en Laravel 5.3
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Nuevos helpers de rutas en Laravel 5.5 Lección siguiente Nuevo comando migrate:fresh en Laravel 5.5