Correos
Una vez creada una cuenta (por defecto no verificada), se le envía con un correo al email que se usó para registrarse con un código que debe utilizar por medio de un enlace, luego de abrir el link la cuenta es verificada.
1. Preparación del sistema para el envío de correos electrónicos
Descargar paquete
Seleccionar servicio de correo en archivo config/services.php
Se selecciona el servicio a utilizar para ello se deben añadir las variables de entorno al archivo .env y configurar los campos según los valores de las cuentas que se hayan creado en dichos servicios.
Por ejemplo en caso de usar mailgun se tiene:
Configurar servicio de correo en archivo config/mail.php
Driver
Según el servicio seleccionado, se debe especificar el mail driver (por ejemplo, colocar mailgun), y variables relacionadas con el mismo.
En este caso se utilizará el archivo de log para facilitar la depuración:
Configuración del remitente global --> Global "From" Address
Es la cuenta de correo que usará Laravel cada que envíe un mensaje.
Es recomendado utilizar en el MAIL_FROM_ADDRESS el mismo dominio del servicio de correo (mailgun, sparkpost), en este caso se utilizará el dominio local (@localhost) y como nombre el valor que se prefiera
Nota: los cambios realizados al .env deben agregarse al archivo .env.example
2. Implementar sistema de verificación
Crear ruta en routes/api.php
Crear método verify en User/UserController.php
3. Mailable para verificar usuarios creados
Crear Mailable usando php artisan
Un mailable es una clase que permite especificar los aspectos relacionados con el envío de correos electrónicos, como destinatario, tema, contenido, vista, etc...
Nota: los mailables (UserCreated) se guardan dentro de la carpeta app/Mail
Personalizar Mailable
Notas:
*Cualquier propiedad public definida en el mailable estará disponible en la vista
*En el método build, se puede retornar una versión en texto plano del correo usando el métodotext.
Al igual que el método view
, el métodotext
acepta el nombre del template name que será usando para mostrar el contenido del email. Se pueden definir ambos simultáneamente
Crear vista que retornará el Mailable
Crear carpeta para guardar las vistas en views/emails. En este caso crear welcome.blade.php y personalizar mensaje que mostrará
Enviar correo de verificación usando evento del modelo User
En app/Providers/AppServiceProvider.php en el método boot()
Verificar funcionalidad con Postman
Teniendo en cuenta que el driver que estamos utilizando es log, cada que se envie un mail, este se registrará en el archivo de log de laravel, este se encuentra en storage/logs/laravel.log
Para verificar la cuenta, simular que el usuario abrió el link haciendo una petición get
Y finalmente, se tiene que la cuenta fue verificada
4. Vistas especialmente para correo electrónico --> Markdown
Permite utilizar etiquetas predefinidas en blade para facilitar la creación de interfaces para correos todas en html (tablas, títulos, ...).
Para crear un Mailable con un Markdown llamado prueba (en la carpeta views/emails) asociado
De esta manera se generan 2 archivos: la clase /app/Mail/Prueba.php
y la vista /resources/views/emails/prueba.blade.php
Así, se tiene un template con una estructura
Configurar templates usando etiquetas Markdown
Ahora, utilizando la estructura del Markdown, se procede a modificar la estructura de los templates de views/emails (en una próxima ocasión crear el Mailable con el Markdown directamente).
Modificar Mailable de UserCreated
En el método build especificar que se retornará un markdown, no text.
Verificar funcionalidad con Postman
Dentro del log se registra el código HTML generado con el Markdown
5. Mailable para validar un nuevo correo
En caso de que los usuarios cambien su correo electrónico
Crear Mailable
Personalizar Mailable
Crear vista que retornará el Mailable
Crear carpeta para guardar las vistas en views/emails. En este caso crear welcome.blade.php y personalizar mensaje que mostrará
Enviar correo de verificación
En app/Providers/AppServiceProvider.php en el método boot()
6. Reenviar correo de verificación
Esto con la finalidad de que el usuario pueda pedir le sea reenviado el correo de verificación en caso de no recibirlo, o si hubo algún problema y el correo no fue enviado
Crear ruta en routes/api.php
Crear método verify en User/UserController.php
Verificar funcionalidad con Postman
7. Manejar acciones propensas a errores
Lidiar con acciones que pueden ser propensas a fallas, por ejemplo el envío de correos, para esto se usará el helper. Este helper permite reintentar una misma acción en diferentes ocasiones en caso de haber fallado, con un máximo de intentos.
Añadir helper en los lugares en que se envíen correos (AppServiceProvider.php y UserController)
Nota: si la función falla, Laravel reintentará ejecutarla el número de veces fijadas en el retry. En caso de completar el número de intentos y no conseguir ejecutar la función será lanzada una excepción
Last updated
Was this helpful?