Como Enviar un Correo Electrónico desde C# .Net de forma fácil

En la mayoría de las aplicaciones existe la necesidad de enviar un correo electronico, a continuación les muestro una forma sencilla de enviar un correo electronico desde C# .net.

Lo primero que debemos hacer es llamar la libreria: using System.Net.Mail; luego para fines de este ejemplo, se crea un método llamado SendMail que contiene toda la funcionalidad necesaria para construir y enviar el correo.

A continuación se declara un método llamado SendMail recibiendo los parámetros necesarios para enviar el correo:
/// 
/// Envía un email
/// 
/// Quien lo envía 
/// A quien se le envía 
/// Asunto 
/// Cuerpo del correo 
/// Correo con copia oculta 
/// Adjuntar archivos al correo  
public void SendMail(System.String sFrom, System.String sTo,System.String sSubject, System.String sBody,System.String sCC, System.String[] sFile)
{
    //Separar correos
    string[] toAddresses = sTo.Split(';');
    //Crear objeto que enviara el mail
    System.Net.Mail.MailMessage mailNew = new MailMessage();
    //Asigna propiedades y dirección desde la que se envía
    mailNew.From = new System.Net.Mail.MailAddress(sFrom);

Al objeto mail, agregamos los destinatarios (previamente fueron separados por punto y coma), copia oculta del correo. Asunto, cuerpo del correo, así como el formato en que se enviara el correo:

    //Agregamos los destinatarios del correo y copia oculta
    foreach (string toAddress in toAddresses)
    {
        mailNew.To.Add(new MailAddress(toAddress));
    }      
    mailNew.Bcc.Add(sCC);
   
    //Asunto y cuerpo del correo
    mailNew.Subject = sSubject;
    mailNew.Body = sBody;
   
    //Habilitar formato html al correo y prioridad
    mailNew.IsBodyHtml = true;         
    mailNew.Priority = MailPriority.Normal;
Configuramos las propiedades del servidor de correo, si necesita autenticación segura se deben configurar las credenciales (Linea 11):
    //Establecemos los datos del servidor de correo
    System.Net.Mail.SmtpClient SmtpDominio = new System.Net.Mail.SmtpClient();
    //Nombre del servidor de correo
    SmtpDominio.Host = "smtp.dominiocorreo.com";
    //Asignamos el número del puerto
    SmtpDominio.Port = 80;
    //Autenticación segura
    SmtpDominio.EnableSsl = true
   
    //Si el servidor de correo necesita autenticacion de agrega la siguiente linea
    SmtpDominio.Credentials = new System.Net.NetworkCredential("correo@dominio.com", "clave123");

Como Enviar un Correo Electronico desde C# con Archivos Adjuntos

Si necesitamos enviar el correo electrónico con archivos adjuntos, se utiliza el siguiente código usando el objeto mailNew, el agrega el archivo a través del método Attachments.Add, como lo pueden observar en el siguiente ejemplo:
 try
    {
        //Limpiar objeto para adjuntar archivos
        mailNew.Attachments.Clear();
        //Si los hay, agregamos archivos adjuntos al correo
        if (sFile != null)
        {              
            for (int i = 0; i < sFile.Length; i++)
            {
                if (!string.IsNullOrEmpty(sFile[i].ToString())) 
                  mailNew.Attachments.Add(new System.Net.Mail.Attachment(sFile[i].ToString()));
            }
        }
        //Enviar correo
        SmtpDominio.Send(mailNew);
       
        //Muy importante esta linea, se debe liberar el objeto que almacena 
        //los archivos adjuntos
        mailNew.Attachments.Dispose();
    }
    catch (Exception Ex)
    {
        //Error enviando
    }      
    //Archivo Enviado
}

Share:

2 comentarios:

  1. Buenas muy bueno tu aporte pero esto seria util para un servicio de windows realizado en c# para el envió automático de correo mediante una fecha de vencimiento avisándole que le quedan menos días para su culminación de (X) tarea...???

    ResponderEliminar
  2. Buenas como puedo ponerlo en un boton para enviar un correo automáticamente. gracias de antemano

    ResponderEliminar