lunes, 13 de agosto de 2012

Enviando mail desde C#

Para enviar un mail desde c# lo que debemos hacer es:
primero agregamos en nuestro web.config las lineas para configurar nuestro SMTP de la siguiente forma:


    
      
        
      
    




Luego creamos una rutina para el envio de mail, para esto debemos importar los siguientes espacios de nombres:

using System.Net;
using System.Net.Mail;
using System.Net.Mime;



y la rutina para envios de mail sería la siguiente:
public void Enviar_mail(string para, string copia, string asunto, string titulo, string mensaje, string attach)
        {
            //Creamos el mensaje
            MailMessage Message = new MailMessage();
            //Agregamos el destinatario
            Message.To.Add(new MailAddress(para));
            //Agregamos el asunto
            Message.Subject = asunto;
            //Le decimos que soporte HTML en el body
            Message.IsBodyHtml = true;
            //Le agregamos el body o cuerpo del mesaje
            Message.Body = mensaje;

            //Si va con copia a alguien lo agregamos
            if (copia != "")
                Message.CC.Add(new MailAddress(copia));

            //Si tiene un adjunto se lo agregamos
            if (attach != "")
            {
                Attachment data = new Attachment(attach, MediaTypeNames.Application.Octet);
                Message.Attachments.Add(data);
            }

            SmtpClient client = new SmtpClient();
            //Enviamos el mail (Automáticamente toma la configuración del web.config)
            client.Send(Message);
        }

Con esto ya tendríamos nuestro envió de mails fácil y sencillo.

2 comentarios:

  1. Hola! Muchas gracias por los tutoriales.
    Estoy mirando tu código para enviar el correo, y he visto que usas el .Send(),
    Si en la web tienes mucho tráfico, creo que sería mejor usar el .SendToQueue o .SendMailToQueue, no recuerdo exactamente como era, de tal manera que creas el mensaje a enviar, lo dejas en la cola y vuelves al control de la página, de tal manera que se enviará en cuanto pueda el servidor de correo, mientras que de la otra manera, el C# está esperando hasta que el mensaje se haya enviado, con lo que es probable que exista una pequeña demora en la espera.

    Muchas gracias por todo, un saludo!!

    ResponderEliminar
  2. Si, este método es sincrónico, para que sea asincrónico podemos usar client.SendAsync(Message, Token).

    Saludos y gracias por tu comentario!!!

    ResponderEliminar