Uso de SendGrid como su transmisión de SMTP en Laravel PHP
Tiempo de lectura: 4 minutos
Introducción
Laravel es uno de los marcos más famosos de Modelo-Vista-Controlador (MVC, por sus siglas en inglés) de PHP con una gran comunidad. Ofrece todas las funciones necesarias para crear su proyecto, ya sea para uso personal o empresarial. Laravel admite de forma predeterminada una amplia gama de proveedores de SMTP, pero en este momento SendGrid no está disponible en modo listo para usar para nosotros.
Este tutorial lo ayudará a implementar SendGrid para enviar correos electrónicos a través de SMTP. Una vez que hayamos terminado, tendrá una aplicación de Laravel en funcionamiento que le permitirá enviar correos electrónicos a usuarios registrados mediante SendGrid. Un beneficio adicional es que podremos comprobar si el usuario lee o abre su correo electrónico.
Requisitos
Configurar un nuevo proyecto de Laravel
Si no tiene instalado Laravel en su sistema, instálelo primero desde la documentación oficial de Laravel. Puede encontrar una guía para comenzar desde Laravel en los documentos de Laravel. Comencemos con la configuración de un nuevo proyecto de Laravel llamado “laravel-email”. Recuerde que puede asignar el nombre que desee a su proyecto.
Esto instalará Laravel v5.8 junto con todas las dependencias necesarias. Los scripts post-create
de Composer crean de forma automática el archivo .env
para nosotros y establecen la variable de entorno APP_KEY
. Agregue el APP_KEY
en el archivo .env
ejecutando este comando si no está configurado automáticamente.
A continuación, debemos agregar los detalles de conexión de la base de datos a nuestro archivo .env
. Utilizaremos la base de datos
MySQL para este proyecto. Después de crear su base de datos local, agregue los valores DB_USERNAME
, DB_PASSWORD
y DB_DATABASE
en el archivo .env
.
Creación de una cuenta de SendGrid
Antes de continuar, configuremos una cuenta Twilio SendGrid para el correo electrónico. Sí, SendGrid ahora es parte de Twilio, lo que potencia el futuro de la interacción con el cliente en una plataforma.
Una vez que hayamos terminado de configurar la cuenta, vamos a crear un controlador de correo para nuestra aplicación de Laravel. Laravel es compatible con las funciones mail()
de SMTP y PHP. De forma predeterminada, Laravel está configurado para correo SMTP. Creemos una transmisión de SMTP para configurar SMTP e integrar en facilidad el servicio de correo electrónico dentro de nuestra aplicación de Laravel.
Ahora, crearemos una clave de API para conectarnos a nuestra cuenta de SendGrid. Asegúrese de darle un nombre a su clave. Llamé a mi clave “laravel-email
”. Si hace clic en el botón “Create Key” (Crear clave) se generará la contraseña del nombre de usuario asociado, es decir, apikey
.
Una vez que se hayan completado estos pasos, complete el archivo .env
con sus credenciales de la siguiente manera:
Esto configurará el controlador de correo de Laravel para la configuración de SendGrid, que podemos verificar en el archivo mail.php
en el directorio de configuración. También hemos agregado las claves de env MAIL_FROM_ADDRESS
and MAIL_FROM_NAME
en el archivo .env
para que podamos leer el nombre y la dirección más adelante. Verificaremos la integración una vez que hayamos terminado de codificar nuestra app.
Creación de un andamiaje de autenticación para iniciar sesión o registrarse
Laravel hace que la implementación de la autenticación sea muy sencilla. De hecho, casi todo está configurado listo para usar para usted. Si no está familiarizado con esto, puede leer más acerca de la autenticación de Laravel en la documentación.
Ejecute este comando para agregar el andamiaje de autenticación a nuestro proyecto de Laravel.
Esto generará el andamiaje de autenticación del proyecto. Laravel 5.7+ viene con la función de verificación de correo electrónico de forma predeterminada, por lo que primero usaremos la funcionalidad predeterminada. Más adelante, cambiaremos a las colas de Laravel para que podamos comprender ambas implementaciones.
Utilice la función verificación de correo electrónico
Para utilizar la función de verificación de correo electrónico, debemos asegurarnos de que nuestro modelo App\User
implemente el contrato Illuminate\Contracts\Auth\MustVerifyEmail
. Abra el archivo modelo App\User
y realice los siguientes cambios:
Nuestra tabla de migración de user
ya está configurada con la columna email_verified_at
y está establecida en anulable de manera predeterminada. Almacena la fecha y la hora en que se verifica la dirección de correo electrónico. Ejecute la migración de nuestra base de datos mediante la ejecución de este comando.
La verificación de correo electrónico es una función opcional que viene con Laravel. Solo tenemos que habilitar rutas para enviar enlaces de verificación y verificar los correos electrónicos. Esto se puede hacer simplemente pasando la opción verify
al método Auth:routes()
. Abra el archivo web.php
en la carpeta routes
(rutas) para habilitar esta opción.
Laravel viene con un middleware de ruta verified
permitir el acceso solo a los usuarios verificados. Así que agreguemos esta ruta a la ruta de home
de este modo:
Ahora que hemos activado la función de verificación de correo electrónico, ejecute este comando para ejecutar la aplicación de Laravel.
Nuestra app de Laravel está funcionando en localhost:8000
. Vamos a probarla.
Pruebas
http://localhost:8000/register
Después del registro, veremos esta página, que muestra que nuestra aplicación de Laravel está funcionando como se esperaba. Revisemos un correo electrónico enviado por nuestra aplicación.
Observe que, si tratamos de acceder a la ruta /home
, nuestra aplicación nos redirigirá a la ruta /email/verify
, ya que agregamos el middleware verified
. Si es curioso, intente iniciar sesión con o sin el middleware.
Una vez verificado el correo electrónico, lo redirigiremos automáticamente a la ruta /home
. Revisemos la actividad en el Panel de control de SendGrid para comprender mejor cómo funciona este proceso.
Como podemos ver, el registro de actividad de SendGrid nos muestra el estado completado de nuestros correos electrónicos. Envié dos correos electrónicos y, entre ellos, hice clic solo en uno, por lo que SendGrid muestra el estado de nuestro correo electrónico, ya sea que haga clic o no. ¡Es la belleza de SendGrid!
Conclusión
En este artículo, implementamos la forma predeterminada de enviar correos electrónicos en Laravel con SendGrid. En una publicación de seguimiento, extenderemos esa lógica mediante la implementación de las funciones de la cola de Laravel y aprenderemos acerca de audiencias, trabajos y clases que se pueden enviar por correo.
Publicaciones relacionadas
Recursos relacionados
Twilio Docs
Desde API hasta SDK y aplicaciones de muestra
Documentación de referencia de API, SDK, bibliotecas auxiliares, inicios rápidos y tutoriales para su idioma y plataforma.
Centro de Recursos
Los últimos libros electrónicos, informes de la industria y seminarios web
Aprenda de los expertos en participación del cliente para mejorar su propia comunicación.
Ahoy
Centro de la comunidad de desarrolladores de Twilio
Mejores prácticas, ejemplos de códigos e inspiración para crear comunicaciones y experiencias de participación digital.