Enviar correo electrónico con C# en ASP.NET y Windows Forms

Que tal compañeros, en esta ocasión les traemos un artículo sobre como enviar correos electrónicos desde una aplicación de Windows Forms o bien desde un sitio Web ASP.NET con C#.

Lo primero que debemos hacer es importar las librerías siguientes que son las que utilizaremos para el correcto funcionamiento de la aplicación:

using System.Text;
using System.Net.Mail;
using System.Net;

Después de haber importado estas librerías pasaremos directamente al fragmento de código que usaremos para enviar el correo electrónico con C#. En dicho código nos autenticaremos con una cuenta de correo electrónico de Gmail dado que nos da facilidades para el envío y conocemos su configuración SMTP pero este código debe funcionar para cualquier proveedor de correo electrónico siempre y cuando se conozcan y se especifiquen los parámetros que solicita su configuración SMTP.

public static Boolean SendMail()
{
           try
           {
                //Configuración del Mensaje
                MailMessage mail = new MailMessage();
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
                //Especificamos el correo desde el que se enviará el Email y el nombre de la persona que lo envía
                mail.From = new MailAddress("tucorreo@gmail.com", "TuNombre", Encoding.UTF8);
                //Aquí ponemos el asunto del correo
                mail.Subject = "Prueba de Envío de Correo";
                //Aquí ponemos el mensaje que incluirá el correo
                mail.Body = "Prueba de Envío de Correo de Gmail desde CSharp";
                //Especificamos a quien enviaremos el Email, no es necesario que sea Gmail, puede ser cualquier otro proveedor
                mail.To.Add("destinatario@hotmail.com");
                //Si queremos enviar archivos adjuntos tenemos que especificar la ruta en donde se encuentran
                mail.Attachments.Add(new Attachment(@"C:\Documentos\carta.docx"));

                //Configuracion del SMTP
                SmtpServer.Port = 587; //Puerto que utiliza Gmail para sus servicios
                //Especificamos las credenciales con las que enviaremos el mail
                SmtpServer.Credentials = new System.Net.NetworkCredential("tucorreo@gmail.com", "tupassword");
                SmtpServer.EnableSsl = true;
                SmtpServer.Send(mail);
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
}

Ya con esto debemos lograr enviar correos electrónicos desde una aplicación C#, este código funciona tanto para aplicaciones de escritorio Windows Forms así como para aplicaciones Web ASP.NET.

Para enviar correos electrónicos con otro proveedor como por ejemplo Hotmail debemos conocer los parámetros correctos para la configuración SMTP.

46 comentarios en “Enviar correo electrónico con C# en ASP.NET y Windows Forms

  1. Hola, muchas gracias por el codigo, trate de colocarlo en mi sitio, coloque los using que especificaron , pero la palabra Encoding.UTF8 no la reconoce, que podrá ser?, para que utilizarlo?

    Me puede ayudar?
    Gracias!

    • Hola Laura, disculpa la tardanza y efectivamente faltaba un using que es System.Text

      Gracias por comentarlo y esperamos que la información haya sido de tu ayuda. Sigue vistándonos.

  2. Chris Moreira

    excelente aporte man!

  3. Muchas Gracias fue de mucha ayuda

  4. Como podria hacer si tengo un correo cooperativo en dicho caso ? ya que aplicando lo que colocas me sale un error diciendo simplemente EL MENSAJE NO HA SIDO ENVIADO, aun tengo problems con eso espero que me contactes ( javivesbernal@hotmail.com )
    Atte. Gracias.

  5. excelente viejo!! te pasaste!!

  6. y este codigo en donde se coloca

    • Dependiendo lo que necesites, lo puedes colocar como un método tal cual se muestra en el ejemplo o en el evento Click de un botón, o en cualquier otro evento. Solo tienes que agregar los usings que se muestran al principio. Saludos!

  7. y como lo ejecuto

    • Depende, te voy a poner un ejemplo. Si haces una solución de Windows Forms con C# vas a poner un botón y en el evento Click de dicho botón pones este código (Sin la parte de public static Boolean SendMail() y sus respectivas llaves), una vez hecho esto compilas la solución, das click al botón y el código se ejecutará

  8. muchas pero muchas gracias soy estudiante estoy desarrollando un programa de nomina el cual enviara la colilla de pago al correo del empleado mediante un crystal report como puedo convertir ese crystal report en formato pdf.
    si me puedes ayudar estaré muy agradecido gracias

  9. muchas gracias brother lo unico que no me salio fue que al correo de hotmail no funca y a los demas dominios si se envia el mail sabes talvez por que? de todas formas muchas gracias fue de gran ayuda

  10. Muchas gracias por el ejemplo. Me fue de mucha ayuda.

  11. muy bueno me sirvio bastante 🙂

  12. Simplemente perfecto Funciona al 100 y ademas muy interesante Gracias :DD

  13. Edgardo Antonio

    Yo quiero registrar a diferentes usuarios y enviarles a su correo el usuario y password claro esta al correo q ellos registran al momento de estar registrandose-

  14. Belleza!! mil gracias por el codigo t agradezco

  15. Hola, me funciono excelente tu ejemplo y lo entendí muy bien te felicito.

    Pero tengo una cuestión pues lo que necesito es mandar un correo por una red interna y quisiera saber si es necesario usar el smtp de gmail o si se pudiera enviar sin necesidad de este y si es así me pudieras explicar como?

    Saludos.

    • En una red interna tu deberás montar tu propio servidor SMTP. Una vez que lo tengas funcionando puedes utilizar el mismo código, únicamente cambiando los parámetros de conexión al servidor tales como dirección, cuenta, puerto, etc.

      Cualquier cosa seguimos online.

      Saludos.

  16. buenas esa funcion puede Enviar las alertas vía email
    y cual seria para recibir Recibir la cancelación de alerta vía email.?

  17. Muy buena entrada, tengo un post muy parecido a este, gran aporte.
    Anexo Url:
    http://devcate.blogspot.com/2012/09/codigo-enviar-correo-con-aspnet.html

  18. muchas gracias por el aporte, groso total

  19. Me gusto mucho pero en el debug me muestra un error y el catch y me dice que que no se puede conectar al servidor remoto de verdad me seria de mucha ayuda si pudieras resolverme esta duda

  20. Buenas, muy clara la explicación. Muchas gracias.
    Sólo una pregunta: ¿cómo le paso un correo cuando se requiere enviar una copia a otro destinatario?

    Juan Carlos

  21. Programador novato

    Buenas muy bien lo explicado pero como hago para aplicar esto a un servicio de windows en C# que me permita enviar correos de forma automática a través de una fecha de vencimiento dandole un mensaje de alerta que le quedan menos días a (x) trabajo..??

  22. mmmiiiiiillllllll ggggggrrrrrrrraaaaaccciiiiiaaaassssss mennnn

  23. muchas gracias me sirvió muy bien

  24. disculpa amigo lo que quiero hacer no poner los correos estaticos asi como tu ejemplo si no que los tome de un dropdownlist los valores de los correos ya que el usuario elejira a que correo desea enviarlo puedes ayudarme?? te lo agradeceria mucho

  25. Como visualizar la bandeja de entrada desde una aplicación C#

  26. ssiii muy buenoooo!!!!!!!!!! like like like

  27. Excelente aportación mi hermano, que la gracia de Dios esté siempre sobre ti…

  28. muy bueno. Excellent

  29. Muy bueno, muchísimas gracias!! una pregunta para enviárselo a varias personas, en el
    mail.CC.Add(“destinatario@hotmail.com, Otrodestinatario@hotmail.com ”);
    se tiene que separar por comas o que?

  30. Amigo, no me funciona el código. Lo estoy haciendo con el correo de mi empresa, y no está funcionando. A la hora de que lo ejecuto, el navegador se queda pensando y luego cae en el catch y me dice que hubo un error a la hora de enviar el correo.
    Comunicate conmigo. dani.worship17@gmail.com

  31. Disculpa me marca error en la parte del return. saludos

  32. Disculpe una pregunta, como podria arrastrar o que me reconozca todos los correos electronicos de la base de datos para poder enviarles el mensajes a travez del formulario c#, bueno y que pueda mandar correos a una fecha especifica. Muchas gracias por los comentario.

  33. Gracias 😉

  34. Me aparece el siguiente error:
    System.Net.Mail.SmtpException: El servidor SMTP requiere una conexión segura o el cliente no se autenticó

    Comprendo todo el codigo pero al momento de ejecutarlo desde un boton no funciona, espero me puedas ayudar, slds

  35. Muchas gracias por compartir, saludos y bendiciones.

  36. AYUDAAAAAAAAAA
    Hola, estoy trabajando con un servidor externo, pero mi aplicacion e c# lanza este error –> La respuesta del servidor fue: 5.7.1 Unable to relay hace dias mi aplicacion estaba funcionando correctamente.
    tengo 2 aplicaciones una realizada en java y otra en c#, y java aun sigue mandando los mensajes sin problema

Replica a santiago Cancelar la respuesta