/// <summary>
        /// Método EnviarEmail.
        /// Permite enviar un email desde de una cuenta de correo específica.
        /// </summary>
        /// <param name="pEmail">Email que se guardará en la base de datos</param>
        /// <param name="pCuenta">Cuenta desde la cual enviamos el mail</param>
        /// <param name="pMensaje">Objeto tipo MailMessage para armar el mensaje a enviar</param>
        public void EnviarEmail(EmailDTO pEmail, CuentaDTO pCuenta, MailMessage pMensaje)
        {

            try
            {
                iFactory = DAOFactory.Instancia();
                iFactory.IniciarConexion();
                iFactory.ComenzarTransaccion();
                FactoryServicios.Instancia.Servicio(pCuenta.Servicio).EnviarCorreo(pCuenta, pMensaje);
                if (pEmail.IDMensaje == null)
                {
                    pEmail.IDMensaje = "";
                }
                if (pEmail.Leido == null)
                {
                    pEmail.Leido = "Leído";
                }
                iFactory.MailDAO().Insertar(pEmail);
                iFactory.Commit();
            }
            catch (Exception ex)
            {
                iFactory.RollBack();
                throw new Exception(ex.Message);
            }
            finally
            {
                iFactory.FinalizarConexion();
            }
        }
 public void MarcarLeidoMail()
 {
     DAO = DAOFactory.Instancia();
     DAO.IniciarConexion();
     DAO.ComenzarTransaccion();
     DAO.MailDAO().MarcarLeido(1);
     DAO.Commit();
 }
 public void EliminarMail()
 {
     DAO = DAOFactory.Instancia();
     DAO.IniciarConexion();
     DAO.ComenzarTransaccion();
     DAO.MailDAO().Eliminar(1);
     DAO.Commit();
 }
 public void EnviarMailPrueba()
 {
     SmtpClient iCliente = new SmtpClient();
     iCliente.Port = 587;
     iCliente.Host = "smtp.gmail.com";
     iCliente.EnableSsl = true;
     iCliente.Timeout = 10000;
     iCliente.DeliveryMethod = SmtpDeliveryMethod.Network;
     iCliente.UseDefaultCredentials = false;
     iCliente.Credentials = new System.Net.NetworkCredential("*****@*****.**", "AlexanderAnderson");
     MailMessage iMensaje = new MailMessage("*****@*****.**", "*****@*****.**", "Prueba", "Te mando un cosito");
     iCliente.Send(iMensaje);
     List<String> iDestinatarios = new List<String>();
     List<String> iCCO = new List<String>();
     List<String> iCC = new List<String>();
     iDestinatarios.Add("*****@*****.**");
     iDestinatarios.Add("*****@*****.**");
     iEmail = new EmailDTO(1 ,"enviado", "*****@*****.**", iDestinatarios, "Prueba", "Te mando un cosito", iFecha, true, iCC, iCCO);
     DAO = DAOFactory.Instancia();
     DAO.IniciarConexion();
     DAO.ComenzarTransaccion();
     DAO.MailDAO().Insertar(iEmail);
     DAO.Commit();
 }
 /// <summary>
 /// Método GuardarCorreo.
 /// El método permite guardar los emails en la base de datos y persistirlos.
 /// </summary>
 /// <param name="pEmail">Email que vamos a persistir en la base de datos</param>
 public void GuardarCorreo(EmailDTO pEmail)
 {
     try
     {
         iFactory = DAOFactory.Instancia();
         iFactory.IniciarConexion();
         iFactory.ComenzarTransaccion();
         iFactory.MailDAO().Insertar(pEmail);
         iFactory.Commit();
     }
     catch (Exception ex)
     {
         iFactory.RollBack();
         throw new Exception(ex.Message);
     }
     finally
     {
         iFactory.FinalizarConexion();
     }
 }
 /// <summary>
 /// Método MarcarLeido.
 /// Permite marcar como leído un mail.
 /// </summary>
 /// <param name="pIDMail">ID del mail que se marcará como leído.</param>
 public void MarcarLeido(int pIDMail)
 {
     try
     {
         iFactory = DAOFactory.Instancia();
         iFactory.IniciarConexion();
         iFactory.ComenzarTransaccion();
         iFactory.MailDAO().MarcarLeido(pIDMail);
         iFactory.Commit();
     }
     catch (Exception Ex)
     {
         iFactory.RollBack();
         throw new Exception(Ex.Message);
     }
     finally
     {
         iFactory.FinalizarConexion();
     }
 }
 /// <summary>
 /// Método ExisteCorreo.
 /// El método controla si existen o no los correos en la base de datos.
 /// </summary>
 /// <param name="pEmail">Email que se verifica si existe o no en la base de datos</param>
 /// <returns>TRUE en caso de que exista. FALSE en caso contrario</returns>
 public bool ExisteCorreo(EmailDTO pEmail)
 {
     bool iEncontrado = false;
     try
     {
         iFactory = DAOFactory.Instancia();
         iFactory.IniciarConexion();
         iFactory.ComenzarTransaccion();
         iEncontrado = iFactory.MailDAO().ExisteCorreo(pEmail);
         iFactory.Commit();
         return iEncontrado;
     }
     catch (Exception Ex)
     {
         iFactory.RollBack();
         throw new Exception(Ex.Message);
     }
     finally
     {
         iFactory.FinalizarConexion();
     }
 }
        /// <summary>
        /// Método ObtenerUnCorreo.
        /// Obtiene un único correo mediante su ID para poder extraer la información necesaria de él.
        /// </summary>
        /// <param name="pIDMail">ID del mail que necesitamos obtener</param>
        /// <returns>Email encontrado</returns>
        public EmailDTO ObtenerUnCorreo(int pIDMail)
        {
            try
            {
                iFactory = DAOFactory.Instancia();
                iFactory.IniciarConexion();
                iFactory.ComenzarTransaccion();
                EmailDTO iEmail = iFactory.MailDAO().ObtenerMail(pIDMail);
                return iEmail;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            finally
            {
                iFactory.FinalizarConexion();
            }

        }
 /// <summary>
 /// Método ObtenerTodosLosCorreos.
 /// Obtiene todos los correos que están persistidos en la base de datos, de todas las cuentas disponibles.
 /// </summary>
 /// <returns>Lista de todos los correos persistidos en la base de datos</returns>
 public List<EmailDTO> ObtenerTodosLosCorreos()
 {
     try
     {
         iFactory = DAOFactory.Instancia();
         iFactory.IniciarConexion();
         iFactory.ComenzarTransaccion();
         List<EmailDTO> iListaCorreosObtenidos = iFactory.MailDAO().ObtenerTodos();
         return iListaCorreosObtenidos;
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
     finally
     {
         iFactory.FinalizarConexion();
     }
 }
 public void ObtenerMail()
 {
     DAO = DAOFactory.Instancia();
     DAO.IniciarConexion();
     DAO.ComenzarTransaccion();
     List<EmailDTO> email = new List<EmailDTO>();
     email = DAO.MailDAO().Obtener(1);
 }