Enviar correos electrónicos en c#

on miércoles, 21 de diciembre de 2011
En el trabajo me encargaron que diseñara e implementara una clase para enviar correos para visual studio 2010 en el lenguaje de C#, veamos como la fui armando, primero que nada, haremos una clase llamada

                                                          ManejadorDeCorreoElectronico

una vez tengamos nuestra clase, vamos agregar la siguiente referencia:

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


Esto es para poder utilizar las clases siguientes:

                             MailMessage, SmtpClient y Attachment


Estas clases cuentan con los metodos y propiedades necesarias para poder enviar correos electronicos, la clase MailMessage trae propiedades como Subject, Body, Priority entre otras mas.

La clase SmtpClient cuenta con propiedades basicas propias del ambito de un cliente Smtp, como lo es el puerto y el host.

Creando clase ManejadorDeCorreoElectronico:



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

namespace Utilerias
{
    public class ManejadorDeCorreoElectronico
    {
        private MailMessage CorreoElectronico;

        private SmtpClient Smtp;    
     

        // nota: el constructor por defecto utilizara el cliente Smtp de gmail
        public ManejadorDeCorreoElectronico()
        {
         
            CorreoElectronico = new MailMessage();
            Smtp = new SmtpClient("smtp.gmail.com", 587);          
            Smtp.EnableSsl = true;          
            CorreoElectronico.Priority = MailPriority.Normal;
            CorreoElectronico.IsBodyHtml = false;
        }

        public ManejadorDeCorreoElectronico(string host, int port)
        {
            CorreoElectronico = new MailMessage();
            Smtp = new SmtpClient(host, port);
            Smtp.EnableSsl = true;
            CorreoElectronico.Priority = MailPriority.Normal;
            CorreoElectronico.IsBodyHtml = false;
        }
     

 public void EnviarCorreo(string correoFuente, string passowrd,string nombreYapellidos, string Correodestinatario, string subject, string body)
        {
            try
            {
                Smtp.Credentials = new NetworkCredential(correoFuente, passowrd);
                CorreoElectronico.Subject = subject;
                CorreoElectronico.Body = body;
                CorreoElectronico.From = new MailAddress(correoFuente, nombreYapellidos);
                CorreoElectronico.To.Add(new MailAddress(Correodestinatario));
                Smtp.Send(CorreoElectronico);              
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

        public void EnviarCorreo(string correoFuente, string passowrd, string nombreYapellidos, string                                     Correodestinatario, string subject, string body, string fileName)
        {
            try
            {
                Smtp.Credentials = new NetworkCredential(correoFuente, passowrd);
                CorreoElectronico.Subject = subject;
                CorreoElectronico.Body = body;
                CorreoElectronico.From = new MailAddress(correoFuente, nombreYapellidos);
                CorreoElectronico.To.Add(new MailAddress(Correodestinatario));
                CorreoElectronico.Attachments.Add(new Attachment(fileName));
                Smtp.Send(CorreoElectronico);              
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

    }
}


El método EnviarCorreo esta sobrecargado, uno para enviar un simple correo y otro para agregar un attachment.

Tambien el constructor esta sobrecargado, ya que el constructor pordefecto, esta configurado con el host y el puerto de gmail.

y el otro constructor, recibe el host y el puerto de un determinado servidor de correos.


Ahora bien, veamos como implementamos nuestra clase.

1.- crear una aplicacion windows form, y agregar un boton y le damos doble click:


         private void button1_Click(object sender, EventArgs e)
        {
            ManejadorDeCorreoElectronico correo = new ManejadorDeCorreoElectronico();


            try
            {
                correo.EnviarCorreo("user@gmail.com", "password", "Fernando Hoyos", "userDestino@dominio.com", "correo                       prueba", "este es un correo de prueba enviado por c#, no te malviajes");
                MessageBox.Show("ya se armo el correo");
            }
            catch (Exception ex)
            {
                MessageBox.Show("no se armo ni maiz" + ex.Message);
            }      
         }



Enjoy =)

1 comentarios:

Anónimo dijo...

Que bien :D

Publicar un comentario