Es bastante común que necesitemos enviar correos electrónicos desde nuestras aplicaciones web para notificar ciertas acciones realizadas por eso, hoy quiero compartir un ejemplo de cómo desarrollar un Azure Webjob que realice el envío de correos por medio de SendGrid que, dado que para los suscriptores de Microsoft Azure dispone de una opción gratuita que permite enviar hasta 25.000 correos al mes, es, desde mi punto de vista, la mejor opción.
Para ilustrar el ejemplo, detallaré paso a paso cómo configurar todo lo necesario para usar SendGrid desde un proyecto de consola que después se podrá publicar como Webjob asociado a una aplicación web (Web App) alojada en Microsoft Azure.
Crear el servicio de SendGrid desde la tienda de Microsoft Azure
En primer lugar debemos acceder a nuestra cuenta de Microsoft Azure y dirigirnos a la tienda de servicios donde buscaremos SendGrid. Una vez lo hayamos localizado, sólo tenemos que agregarlo y rellenar los datos correspondientes a su configuración.
Es muy importante que nos quedemos con el usuario y que recordemos la contraseña porque será lo que nos permita enviar el correo
Añadiendo la referencia a SendGrid en nuestro proyecto
Ahora que ya tenemos creado el servicio de SendGrid, debemos referenciar la API desde nuestro proyecto de consola que previamente habremos creado. Esto lo haremos desde el Administrador de paquetes de Nuget
Crear un correo
Ahora que ya tenemos el servicio y la referencia a la API, será muy sencillo crear y enviar correos tal y como se explica en la documentación de SendGrid
Lo primero que debemos hacer es generar el correo con los parámetros correspondientes tal y como muestro en el siguiente código
private static MailMessage CreateEmail()
{
// Create the email object first, then add the properties.
var message = new MailMessage();
// Add the message properties.
message.From = new MailAddress("santiagoporras@santiagoporras.com");
// Add multiple addresses to the To field.
var recipients = @"Santiago Porras Rodríguez <demo1@gmail.com>,
Santiago Porras Rodríguez <demo2@gmail.com>,
Usuario Demo 1 <demo1@outlook.com>,
Usuario Demo 2 <demo2@outlook.com>";
message.To.Add(recipients);
message.Subject = "Testing the SendGrid Library";
//Add the HTML and Text bodies
var html = "<h1>¡santiagoporras.com próximamente!</h1><p>En breve estará disponible mi sitio web. No dudes en visitarlo</p>";
var text = "¡santiagoporras.com próximamente!n En breve estará disponible mi sitio web. No dudes en visitarlo";
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html));
message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(text, null, MediaTypeNames.Text.Html));
return message;
}
Enviar un correo
El envío lo haremos por medio de SMTP mediante un simple código que establece las credenciales con las que estamos dados de alta en el servicio y que os dije que debíais recordar en el paso de creación del servicio.
private static void SendEmail (string sgUsername, string sgPassword, MailMessage message)
{
// Set credentials
var credentials = new NetworkCredential(sgUsername, sgPassword);
// Create SMTP cliente
SmtpClient smtpClient = new SmtpClient("smtp.sendgrid.net", Convert.ToInt32(587));
smtpClient.Credentials = credentials;
// Send email
smtpClient.Send(message);
}
Publicar como Webjob
Ahora debemos proceder a publicar este proyecto como Webjob de nuestra aplicación web tal y como os mostré en este artículo.
Ver estadísticas
Finalmente, podemos entrar en el sitio de estadísticas de SendGrid y ver cuál es el uso que estamos haciendo de este servicio.
Resumen
Como podéis comprobar, es muy sencillo crear el servicio, que nos permite el envío de hasta 25.000 correos de forma gratuita y, mediante su API, poder generarlos y enviarlos a los usuarios de nuestras aplicaciones web y espero que os sirva de ayuda. Podéis descargaros el código desde GitHub