Enviar un e-mail desde .NET utilizando una cuenta SMTP de GMail


En mi proyecto de fin de carrera implementé un sistema automatizado de reservas que avisaba por e-mail del estado de las mismas. Para mi desgracia, olvidé mencionarlo durante la defensa, por lo que a nivel institucional fue una pérdida de tiempo, pero no así a nivel didáctico (que es, a fin de cuentas, lo importante).

Para implementarlo, utilicé los espacios de nombres System.Net y System.Net.Mail y una cuenta de Gmail a la que previamente le había activado el acceso POP/SMTP. Mandar un mail desde .NET es relativamente sencillo.

Si pensamos en la composición de un mail en términos de objetos, veremos que en realidad, enviar un mail es muy, pero que muy sencillo. Imaginemos que tenemos una cuenta en Gmail, por ejemplo ‘estoesunapruebademail25@gmail.com‘, cuya contraseña es ‘inteligible43‘. Queremos mandar un correo. ¿Qué información necesitamos?

  • Un mensaje, que implementará la clase MailMessage.
  • Un cliente de correo (SmtpClient) que se encargue de la autenticación y envío del mensaje.

A su vez, el mensaje necesitará:

  • Uno o varios destinatarios.
  • Un remitente.
  • Un asunto (subject).
  • El texto del mensaje.

Mientras que el cliente del correo necesitará saber:

  • Servidor SMTP al que conectarse y puerto.
  • Nombre de usuario y contraseña.

Por lo tanto, una forma sencilla de enviar el correo sería la siguiente:


// Declaramos el mensaje y el cliente de correo.
MailMessage mensaje = new MailMessage();
SmtpClient clienteCorreo = new SmtpClient();

// Rellenamos el mensaje
mensaje.From = new MailAddress("estoesunapruebademail25@gmail.com");	// Remitente
mensaje.To.Add(new MailAddress("destinatarioprueba523@gmail.com");	// Destino
mensaje.CC.Add(new MailAddress("destinatarioprueba523cc@gmail.com");	// Destino (en Carbon Copy)
mensaje.Bcc.Add(new MailAddress("destinatarioprueba523bcc@gmail.com");	// Destino (en Blind Carbon Copy, oculto)

// Asunto y cuerpo
mensaje.Subject = "Saludos";
mensaje.Body = "Hola, ¿Qué tal estás?";

// Configuramos el cliente de correo
clienteCorreo.UseDefaultCredentials = false;
clienteCorreo.Credentials = new System.Net.NetworkCredential("estoesunapruebademail25", "inteligible43");
clienteCorreo.DeliveryMethod = SmtpDeliveryMethod.Network;

clienteCorreo.Host = "smtp.gmail.com";
clienteCorreo.Port = 587

clienteCorreo.EnableSsl = true;

ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidarCertificado);

// Enviamos el correo
clienteCorreo.Send(mensaje);

No debemos olvidarnos de añadir la función ValidarCertificado, que sería algo como lo que sigue:


private bool ValidateCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}

Rellenando las estructuras detalladas aquí a nuestro gusto, podremos automatizar el envío de correos con una simple cuenta SMTP, y más concretamente, de Gmail 🙂

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s