Utilizando el espacio de nombre (namespace) System.Net.Mail, enviar un correo electrónico desde .NET es tarea sencilla.

Las clases que utilizaremos son:

  • SmtpClient: permite a la aplicación enviar el mensaje de correo electrónico mediante el protocolo SMTP.
  • MailMessage: representa el mensaje de correo electrónico que será enviado mediante la clase SmtpClient.
  • MailAddress: representa la dirección de un remitente o destinatario de correo electrónico.
  • NetworkCredential (esta clase pertenece al namespace System.Net): proporciona la credencial para el esquema de autenticación.

Para ejemplificar el uso, veamos directamente un poco de código escrito en C#:


private void buttonEnviar_Click(object sender, EventArgs e)
        {
            mMail m = new mMail();
            m.From(textDeCorreo.Text, textDeNombre.Text);
            MessageBox.Show(m.Send(textAMail.Text,textAAsunto.Text,textContenido.Text));
        }

class mMail
    {
        private String fromMail;
        private String fromName;

        SmtpClient client;

        public mMail()
        {
            client = new SmtpClient();
            client.Credentials = new NetworkCredential("nombre@servidor.com", "password");
            client.Port = 587;
            client.Host = "smtp.gmail.com";
            client.EnableSsl = true;
        }

        public void From( String fromMail, String fromName )
        {
            this.fromMail = fromMail;
            this.fromName = fromName;
        }

        public String Send(String to, String subject, String body)
        {
            MailMessage msg = new MailMessage();

            msg.To.Add(to);
            msg.From = new MailAddress(this.fromMail, this.fromName , System.Text.Encoding.UTF8);
            msg.Subject = subject;
            msg.SubjectEncoding = System.Text.Encoding.UTF8;
            msg.Body = body;
            msg.BodyEncoding = System.Text.Encoding.UTF8;
            msg.IsBodyHtml = true;

            try
            {
                this.client.Send(msg);
                return "Mail enviado correctamente";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

    }