La semana pasada tuve que trabajar en un proyecto con un colega y estábamos hablando de los correos electrónicos de notificación que vamos a usar en la aplicación, automáticamente pensé en azure y encontré el servicio perfecto para esta tarea. SendGrid es un servicio de correo electrónico basado en la nube que proporciona entrega de correo electrónico transaccional confiable, escalabilidad y mucho más.

Entonces, ¿qué implica el uso de SendGrid? ¿Tiene algún costo?

Los clientes de Azure pueden desbloquear 25.000 correos electrónicos gratuitos cada mes. Con la posibilidad de enviar hasta 25,000 correos electrónicos mensuales gratuitos, también tendrás acceso a informes, análisis avanzados y a todas las API (Web, SMTP, Event, Parse y más)

Vamos a Empezar

  1. Registarte para obtener una cuenta de SendGrid para esa tarea, debe iniciar sesión en Azure Portal y crear un recurso SendGrid.

Cuando estés complentado la configuración de tu nuevo recurso, puedes elegir tu suscripción, grupo de recursos y precios. Después de completar el formulario con toda su información de contacto, verás un pop-up que te indicará la «implementación exitosa», una vez completado este proceso podrás visualizar SendGrid en tu lista de recursos.

Existen diferentes niveles de precios según tus necesidades; para este demo, usaremos el plan gratuito:

Una vez,  completes todos los formularios y despliegue el recurso, debes verificar tu cuenta, es super rápido y simple. Lo siguiente que debes hacer es proporcionar un «API key» a SendGrid. Para eso, haga clic en el botón administrar para acceder al portal SendGrid. En las secciones de configuración de su recurso, encontrarás la clave para registrarte en tu cuenta de SendGrid.

En el portal de Sendgrid, busca la sección de configuración para obtener la clave API:


Todo lo que tiene que hacer es seleccionar la clave API, crear una nueva y guardarla, más tarde la necesitará.
Entonces, ¿cómo enviar correo electrónico desde ASP.NET Core API?

Lo primero que debe hacer es agregar la clave API de SendGrid en su archivo appsetting.json como en este ejemplo:

En segundo lugar, debemos agregar algo de código en el archivo Startup.cs en el proyecto de la API de .NET Core para acceder a la clave de API de SendGrid en appsettings.json Todo lo que necesita hacer es agregar la dependencia IConfiguration al contenido de nuestro archivo Startup.cs:

De cara a las necesidades futuras vamos a crear un Servicio, al que podemos llamar donde lo necesitemos. Nos facilitará la reutilización del código. No vamos a profundizar en detalles sobre la interfaz y el servicio, eso podría ser un tema para otro día: p

Antes de crear el servicio, vamos a crear una interfaz donde vamos a definir los métodos de nuestro SendEmailService:

Una vez que creamos la interfaz, vamos a implementar esta interfaz en el servicio:

Como pudieron notar en la declaracion del metodo para el el envio del correo, estamos recibiendo un modelo. Este contendrá la información necesaria para enviar nuestro correo:

Esta es la lista de las cosas mas relevantes que podemos apreciar en el método de envío de correo:

  • La clave API: se basa en la clave API que ya configuró en la configuración de su aplicación.
  • El mensaje var que ejecuta la tarea para crear un solo correo electrónico, SendGrid tiene muchas opciones según tus necesidades, eres libre de experimentar con ellas 🙂
  • La última es la variable response, esta se encarga de ejecutar la acción anterior y que realmente se envie el correo.

Nota:

Para que esto funcione, también debe incluir su servicio en el archivo Startup.cs, dependiendo del enfoque que esté utilizando para la inyección del servicio. Estoy usando Autofac, te dejo el enlace de la documentación como referencia.

Para que veas de una vez como podría verse tu correo electrónico aqui te pruebo el endpoint en postman y te muestro el resultado.

Asi es como se vería este correo:

Gracias por leer, espero que esto te sea útil. @ ^ ▽ ^ @ (✿ ♥ ‿ ♥) (♥ ω ♥ *)

Referencias:

How to use the SendGrid email service (.NET) | Microsoft Docs

Getting Started — Autofac 6.0.0 documentation (autofaccn.readthedocs.io)

Manage SendGrid API Keys | SendGrid Documentation

Versión en Inglés: 

Send Emails Using SendGrid with Azure in .NET Core | by LESLIE GORDIAN | Dec, 2020 | Medium