Enviar e-mails en ASP.NET MVC

Introducción: ¿Por qué complicarse con los e-mails en ASP.NET MVC?

Enviar e-mails desde una aplicación web puede sonar tan divertido como leer la documentación del SAT, pero hey, es necesario.

Ya sea para confirmar registros, enviar recordatorios o simplemente para decir «Hola, gracias por registrarte«, necesitas un sistema de e-mails robusto.

Y ahí entra MvcMailer como un superhéroe que no sabías que necesitabas.

¿Qué es MvcMailer y por qué deberías usarlo?

MvcMailer es una librería que facilita la vida al trabajar con e-mails en ASP.NET MVC.

Combina lo mejor de Razor (las vistas que ya amas) con el poder del correo electrónico. En lugar de estar armando cadenas de HTML como si fuera 1999, puedes usar vistas y layouts tal como en tus páginas normales. 🤯

Instalación paso a paso (sin perder la paciencia)

Abra su consola de NuGet y escriba la fórmula mágica:

Install-Package Mvc.Mailer

Eso es todo. Bueno, casi. Asegúrate de tener referencias a System.Net.Mail y Mvc.Mailer en tu proyecto. Nada que un Ctrl + . no pueda arreglar.

Configuración del SMTP (sí, esa parte aburrida pero necesaria)

En tu Web.config, añade lo siguiente dentro de <system.net>:

<system.net>
  <mailSettings>
    <smtp from="tucorreo@dominio.com">
      <network host="smtp.gmail.com" port="587" userName="tucorreo@dominio.com" password="tu_contraseña" enableSsl="true" />
    </smtp>
  </mailSettings>
</system.net>

Pro tip: Usa variables de entorno para no dejar tus contraseñas paseando por el código.

Creando tu primera clase Mailer: que empiece la magia

Crea una clase que herede de MailerBase:

public class UsuarioMailer : MailerBase
{
    public EmailResult Bienvenida(string nombre, string email)
    {
        ViewBag.Nombre = nombre;
        return Email("Bienvenida", email);
    }
}

Listo, ya tienes una clase que puede disparar un e-mail con nombre personalizado. ¡Casi como magia negra, pero legal!

Diseñando la vista del e-mail (porque sí, el diseño también cuenta)

Crea una vista Razor en Views/UsuarioMailer/Bienvenida.cshtml:

<h2>¡Hola @ViewBag.Nombre!</h2>
<p>Gracias por registrarte en nuestro sitio. Estamos felices de tenerte a bordo. 🎉</p>

Simple, directo y sin Comic Sans.

Llamando al mailer desde tu controller sin romper nada

En tu controller:

public ActionResult EnviarBienvenida(string nombre, string email)
{
    var mailer = new UsuarioMailer();
    mailer.Bienvenida(nombre, email).Send();
    return Content("Correo enviado a " + email);
}

Boom. El usuario recibe un correo sin que se caiga el servidor (con suerte).

try
{
mailer.Bienvenida(nombre, email).Send();
}
catch (Exception ex)
{
// Loguea el error, muestra un mensaje amigable o llama a los bomberos.
Console.WriteLine(ex.Message);
}

Consejos finales para que tus correos no terminen en spam

👉 Usa asuntos claros y sin palabras tipo «GRATIS DINERO RÁPIDO» 👉 Evita usar solo imágenes en el contenido 👉 Configura SPF y DKIM en tu dominio 👉 Pide al usuario que te agregue a su lista de contactos (sin llorar)

Conclusión: enviar e-mails nunca fue tan humano (ni tan divertido)

Y ya está.

Ahora puedes enviar correos desde tu app ASP.NET MVC como si fueras Tony Stark automatizando su cafetera. MvcMailer te ahorra tiempo, código repetitivo y muchas frustraciones.

¿El siguiente paso? Adjuntos, templates con CSS, y por qué no, notificaciones push. Pero eso… eso es historia para otro post 😉