Enviar un Mail desde C# .NET y GMail/Hotmail


 

 

 

 

Como enviar un Coreo Electronico desde C# .NET utilizando el SMTP de GMail y/o Hotmail

En este Post compartiré con ustedes una manera muy fácil y rápida para enviar un eMail desde una aplicación .Net C#. Si no tienen su propio servidor de correo (SMTP), utilizaremos los servidores de Google y/o Microsoft.

Suponiendo que ya tenemos nuestra aplicacion creada, agregamos una nueva clase llamada Correos la cual contendra la informacion del SMTP y el metodo Enviar(MailMessage mensaje).

// Agregamos un nuevo Using a la clase.
using System.Net.Mail;
// El código de la clase es:
class Correos
    {
        /*
         * Cliente SMTP
         * Gmail:  smtp.gmail.com  puerto:587
         * Hotmail: smtp.liva.com  puerto:25
         */
        SmtpClient server = new SmtpClient("smtp.gmail.com", 587);

        public Correos()
        {
            /*
             * Autenticacion en el Servidor
             * Utilizaremos nuestra cuenta de correo
             *
             * Direccion de Correo (Gmail o Hotmail)
             * y Contrasena correspondiente
             */
            server.Credentials = new System.Net.NetworkCredential("xxxx@gmail.com", "xxxx");
            server.EnableSsl = true;
        }

        public void MandarCorreo(MailMessage mensaje)
        {
            server.Send(mensaje);
        }
    }

Pues bien, ya tenemos la Clase encargada de enviar los correos, ahora podemos llamarla desde cualquier punto de nuestra aplicación.  Sin olvidar agregar el Using Correspondiente:

using System.Net.Mail;
try
{
    Correos Cr = new Correos();
    MailMessage mnsj = new MailMessage();

    mnsj.Subject = "Hola Mundo";

    mnsj.To.Add(new MailAddress("amiguito@domain.com"));

    mnsj.From = new MailAddress("YO@MiDominio.com", "Nombre Apellido");

    /* Si deseamos Adjuntar algún archivo*/
    mnsj.Attachments.Add(new Attachment("C:\\archivo.pdf"));

    mnsj.Body = "  Mensaje de Prueba \n\n Enviado desde C#\n\n *VER EL ARCHIVO ADJUNTO*";

    /* Enviar */
    Cr.MandarCorreo(mnsj);
    Enviado = true;

    MessageBox.Show("El Mail se ha Enviado Correctamente", "Listo!!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}

Pues bien, eso es todo por esta ocasión, como dije en un principio, creo que es muy fácil y rápido, por lo que no considero necesario subir el código del proyecto.

Espero les sea de utilidad el post, y como siempre, se agradecerán todos los comentarios.

About these ads

30 thoughts on “Enviar un Mail desde C# .NET y GMail/Hotmail

  1. Lo probé, al parecer no me da ningún error, pero no están llegando los correos que envío de prueba, utilizó C# también, no tiene errores mi código, no se cae, coloque un punto de interrupción y aun así no envía los correos, alguien me puede ayudar ??

  2. Hay un error para hotmail dice:

    * Hotmail: smtp.liva.com puerto:25

    Debe ser:

    * Hotmail: smtp.live.com puerto:25

    Listo funciona correctamente

    • Solo es una variable de control que usaba cuando puse el codigo en produccion, y al momento de crear el tutorial me olvide de quitarla del tuto.

      En sí, para el post no tiene ninguna funcionalidad :p

  3. Una consulta a mi me sale este error

    El tipo o el nombre del espacio de nombres ‘Mail’ no existe en el espacio de nombres ‘System.Net’ (¿falta una referencia de ensamblado?)

    es en esta parte
    MailMessage mnsj = new MailMessage();

    cual es la referencia que me hace falta por que utilizo en using System.Net.Mail; de igual me sigue saliendo ese error
    y donde la puedo conseguir
    Gracias

    Saludos

  4. Tengo el mismo codigo… y me sale un error de conexion. Error al enviar el correo. No es posible conectar con el servidor remoto, intente agregando el puerto, deshabilitando firewall y el antivirus y aun asi no puedo lograr enviar el correo. Cualquier ayuda, muchas gracias.

      • Estoy usando el mismo codigo y me marca error al enviar, estoy usando mi cuenta de gmail, para enviar un correo y no se a ke te refieres con el enableSSl = true; porke si lo tienes en true en el codigo… estoy usando C# .net framework 3.5… podrias ayudarme??

        Gracias

  5. Hola amigo si utilizo otra cuenta de correo corporativa funcionara , he probado con la que tengo de google app de mi empresa y me sale error no se controlo smtpexception

    • Es un error muy generico, necesitabas saber mas especificamente que es el error o que lo causa.
      Si debugeas (o como se diga en español :p) trata de ver la innerException para mas detalles sobre el error.

  6. Gracias por la info. pero tengo un problema, no me toma en cuenta la dirección que le pongo el from y el destinatario ve que lo envio el que pongo en las credenciales.
    como se podria solucionar esto, que el destinatario vea como si el dominio de mi empresa lo enviara

  7. Woah! I’m really digging the template/theme of this blog. It’s simple, yet effective. A lot of times it’s challenging to get that “perfect balance” between superb usability and visual appearance. I must say that you’ve done a fantastic job with this. In addition, the blog loads super quick for me on Firefox. Excellent Blog!

  8. Se que es muy tarde pero lo que yo quiero hacer es que el usuario pueda escribir el mensaje que quiera como puedo hacerlo?

  9. Gracias Sergio por la ayuda, pero mi inquietud es la siguiente, estoy adjuntar un archivo pero no desde la raiz (la unidad C) sino dentro de carpetas como E:\INFORMACION\LIONSWYE\Aplicacion210812.txt, como colocaria en la instruccion mnsj.Attachments.Add(new Attachment(“”));
    Gracias.

  10. Hola, si envio el correo pero en ese momento no cuento con internet, es posible almacenarlo para enviarlo en cuanto el ordenador se conecte a internet? Gracias =/

  11. Cuando se envian archivos con nombres largo envia mal el correo adjunta el archivo como =_utf-8_B_U0VNOTQwOTI2TjQ0RUYxNTg0ODM14pSA_ MDYwMzIwMTMxMTMyMDAueG1s_=__ =_utf-8_B__=

  12. me sale un error que dice “error al enviar correo”, será por que mi maquina tiene proxy o a que se debe, pero cuando envie con una red wifi si envio correo correctamente sin ningún problema. me pueden ayudar con eso por favor..1!!1

  13. En el From, no envia la direccion de correo que pongo ahi, la direccion que envia es la que pongo como la credencial

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s