Envío de correo en .NET con C#

22. January 2011 14:50 by Oscar.SS in Desarrollo .NET  //  Tags:   //   Comments (12)

El Framework de .NET nos permite enviar correo electrónico desde nuestro código de forma muy sencilla. Conceptualmente se puede resumir en 3 sencillos pasos:

1- Crear el mensaje de correo.

2- Configurar el cliente de correo desde el que enviamos el mensaje.

3- Enviar el mensaje.

 

Para realizar estas operaciones necesitaremos 3 objetos o clases integradas en el Framework:

- System.Net.Mail.MailMessege -> Nos permite encapsular todos las propiedades de nuestro mensaje.

System.Net.Mail.MailAddress -> Representa una dirección de correo electrónico.

- System.Net.Mail.SmtpClient ->Representa un cliente de correo electrónico basado en el protocolo SMTP.

 

Veamos un ejemplo de código:

 

    public void EnviarCorreo()
    {
        
/*-------------------------MENSAJE DE CORREO----------------------*/

        //Creamos un nuevo Objeto de mensaje
        
System.Net.Mail.MailMessage mmsg = new System.Net.Mail.MailMessage();

        
//Direccion de correo electronico a la que queremos enviar el mensaje
        
mmsg.To.Add("destinatario@servidordominio.com");

        
//Nota: La propiedad To es una colección que permite enviar el mensaje a más de un destinatario

        //Asunto
        
mmsg.Subject "Asunto del correo";
        
mmsg.SubjectEncoding System.Text.Encoding.UTF8;

        
//Direccion de correo electronico que queremos que reciba una copia del mensaje
        
mmsg.Bcc.Add("destinatariocopia@servidordominio.com")//Opcional

        //Cuerpo del Mensaje
        
mmsg.Body "Texto del contenio del mensaje de correo";
        
mmsg.BodyEncoding System.Text.Encoding.UTF8;
        
mmsg.IsBodyHtml = false; //Si no queremos que se envíe como HTML

        //Correo electronico desde la que enviamos el mensaje
        
mmsg.From = new System.Net.Mail.MailAddress("micuenta@servidordominio.com");


        
/*-------------------------CLIENTE DE CORREO----------------------*/

        //Creamos un objeto de cliente de correo
        
System.Net.Mail.SmtpClient cliente = new System.Net.Mail.SmtpClient();

        
//Hay que crear las credenciales del correo emisor
        
cliente.Credentials =
            new 
System.Net.NetworkCredential("micuenta@servidordominio.com""micontraseña");

        
//Lo siguiente es obligatorio si enviamos el mensaje desde Gmail
        /*
        cliente.Port = 587;
        cliente.EnableSsl = true;
        */

        
cliente.Host "mail.servidordominio.com"//Para Gmail "smtp.gmail.com";


        /*-------------------------ENVIO DE CORREO----------------------*/

        
try
        
{
            
//Enviamos el mensaje      
            
cliente.Send(mmsg);
        
}
        
catch (System.Net.Mail.SmtpException ex)
        {
            
//Aquí gestionamos los errores al intentar enviar el correo
        
}
    }

Comments (12) -

Doris
Doris
6/29/2011 8:42:05 AM #

si funciona muchas gracias x compartir

Oscar.SS
Oscar.SS
6/29/2011 10:49:08 AM #

Gracias  a tí Doris por tu agradecimiento!!

Doris
Doris
7/1/2011 7:58:30 AM #

podrias ayudarme!!!
kiero adjuntar datos al enviar obteniendo la ruta desde FileUpload no s como ya intentado y nada x fas puedes?

Oscar.SS
Oscar.SS
7/1/2011 6:04:35 PM #

Hola Doris:

Para adjuntar correo debes utilizar la ruta física en disco del archivo. Sería algo así:

    // Crear el archivo adjunto para el mensaje
    Attachment data = new Attachment("aquí la ruta física completa al archivo", MediaTypeNames.Application.Octet);

    // Añadir el adjunto al mensaje
    message.Attachments.Add(data);

Un saludo.

Juan Z
Juan Z
2/3/2012 5:49:19 AM #

Hola Oscar, una pregunta, es que no hace fatar resaltar la configuracion como smtp o puertos de mi servidor de dominio? porque yo ise esto con mvc y razor pero tuve que definir estas configuraciones. Saludos

Mari
Mari
4/16/2012 5:33:04 PM #

Funciona Perfecto, gracias

jose david
jose david
6/17/2012 4:27:42 AM #

me gustaria saber si esto se puede hacer en visual basic 2010...presenta problemas con el net framework.. hay desde NET FramerWork 2, 3, 3.5 y 4 por favor le agradeceria la ayuda

Oscar.SS
Oscar.SS
6/17/2012 10:51:27 AM #

Hola Jose David:

Por supuesto que se puede hacer con VB, no hay ningún problema. El lenguaje que elijas en .NET realmente carece de importancia, todo se compila a IL (Intermediate Language).

Puedes leer más sobre este tema en las páginas 4 a 6 de este tutorial: es.scribd.com/.../El-lenguaje-intermedio-y-el-CLS

Un saludo

David
David
12/19/2012 7:45:47 PM #

Buen día Oscar,
he utilizado tu código (exactamente igual a como lo colocaste, envio desde gmail por lo tanto activo cliente.Port = 587 y cliente.EnableSsl = true; y tambien coloco el cliente.host como smtp.gmail.com) y no me funciona, hice un paso a paso con el breakpoint y me muestra en la Exception lo siguiente:
Failure sending mail.

podrias ayudarme por favor.

Gracias.

Óscar.SS
Óscar.SS
12/20/2012 4:28:33 AM #

Hola David,

Sinceramente no sé que te puede estar pasando, acabo de probar el código por si hubiera cambiado algo y funciona perfectamente.

¿Podrías darme un poco más de información?

Un saludo.

Oscar
Oscar
3/21/2013 1:07:51 AM #

Amigo. Me salvaste la vida, muy bien explicado tu post. De verdad Muchas muchas gracias, muy bien explicado y funcional

Oscar.SS
Oscar.SS
3/21/2013 9:03:53 AM #

Gracias a tí Óscar por comentar!!  Smile

Recent Comments

Comment RSS

Month List