Envío de mails con ASP.NET

El envío de emails con ASP.NET 2.0 es, terriblemente fácil... la de cosas que han pasado desde que había que usar aplicaciones de terceras personas para enviar un email con ASP 3.0!!! Todas las herramientas necesarias se encuentran en el namespace System.Net.Mail.

Tanto es así, que con tres líneas de código se puede solucionar:

envioEmailASPNET.cs
    MailMessage Email = new MailMessage(Origen, Destino, Asunto, Mensaje);
    SmtpClient smtp = new SmtpClient();
    smtp.Send(Email);


Como veis, no hay más que crear una variable MailMessage con el origen, el destino, el asunto y el mensaje. Luego creamos una variable SmtpClient y se envía el email.

Pues eso, así de fácil ... aunque bueno, eso sería en un mundo ideal, porque lo más normal es que haya que definir el host al que se envía el mail, y muy problablemente haya que definir ciertas credenciales (nombre de usuario y contraseña). Pero no os preocupéis, sigue siendo muy sencillo.

Más sobre la creación del MailMessage
Vayamos por pasos, vamos a esmerarnos un poquito más en la creación de la variable MailMessage:

envioEmailASPNET.cs
        MailAddress origen = new MailAddress("webmaster@subgurim.net", "Soy el webmaster");
        MailAddress destino = new MailAddress("webmaster@google.com", "Larry");

        MailMessage Email = new MailMessage(origen, destino, "Mi asunto", "<b>Cuerpo del mensaje</b>");
        //Email.Bcc =""
        //Email.CC=""
        Email.IsBodyHtml = true;
        Email.Priority = MailPriority.High;
        //Email.ReplyTo=""


Donde lo único que cabe destacar es que origen y destino ya no son variables string, sino variable MailAddress, donde se indica la dirección del correo y el nombre que quieres que aparezca. También se muestra otras opciones de envío de email como los típicos Bcc, CC o ReplyTo, además de indicar la prioridad del mensaje así como indicar si es o no un mensaje HTML.


Más sobre SmtpClient (envío con credenciales)
Es bastante probable que queramos mandar un mail desde a un host smtp con nuestro nombre y contraseña incluído. Debéis importar el namespace System.NET:

envioEmailASPNET.cs     
    SmtpClient smtp = new SmtpClient();

    smtp.UseDefaultCredentials = false;
    NetworkCredential credencial = new NetworkCredential("nombreDeUsuario", "Contraseña");
    smtp.Credentials = credencial;

    // smtp.Port = 25; Se usa para indicar un puerto diferente al habitual
    smtp.Host = "smtp.miservidor.com";

    smtp.Send(Email);

Primero creamos la variable SmtpClient, y seguidamente le decimos que no use las credenciales por defecto. Creamos nuestras nuevas credenciales y las asignamos a nuestra variable. Posteriormente le indicamos cuál es nuestro host smtp y enviamos el email.

Sencillo, ¿no?