Beispiel #1
0
        /// <summary>
        /// Método encargado de obtener las propiedades necesarias para realizar
        /// la conexión con el tipo de Servidor necesario.
        /// </summary>
        /// <param name="envio">Se configura para enviar si es TRUE, para recibir si es FALSE</param>
        /// <param name="server">Servidor del cual se quiere obtener la configuración</param>
        /// <returns></returns>
        public Property obtenerPropiedades(bool envio, ServerDTO server)
        {
            Property propiedad = new Property();

            try
            {
                IServerProperty propiedadObtenida;

                switch (server.Name)
                {
                    case "GMAIL":
                        propiedadObtenida = new Gmail();
                        if (envio) propiedad = propiedadObtenida.getPropiedadEnviar(server);
                        else propiedad = propiedadObtenida.getPropiedadRecibir(server);
                        break;
                    case "OUTLOOK":
                        ///
                        break;
                    case "YAHOO":
                        ///
                        break;
                }
            }
            catch (Exception ex) { }

            return propiedad;
        }
Beispiel #2
0
        public void ConectarSmtp(ServerDTO server, CuentaDTO cuenta)
        {
            cliente = new SmtpClient();

            cliente.Host = server.SmtpServer;
            cliente.Port = server.SmtpPort;
            cliente.DeliveryMethod = SmtpDeliveryMethod.Network;
            cliente.EnableSsl = server.Ssl;
            cliente.Credentials = new NetworkCredential(cuenta.User, cuenta.Password);
        }
Beispiel #3
0
 public void ConectarPop(ServerDTO server, CuentaDTO cuenta)
 {
     cliente = new Pop3Client();
     try {
         cliente.Connect(server.PopServer, server.PopPort, server.Ssl);
         cliente.Authenticate(cuenta.User, cuenta.Password);
     }
     catch (OpenPop.Pop3.Exceptions.PopClientException ex) {
         Console.WriteLine(ex.Message);
     }
 }
Beispiel #4
0
        private void ActualizarDatosLista(List<CuentaDTO> cuentas)
        {
            if (dgvCuentas.Rows.Count != 0)
            {
                foreach (DataGridViewRow fila in dgvCuentas.Rows)
                    dgvCuentas.Rows.Remove(fila);
            }

            foreach (CuentaDTO cuenta in cuentas)
            {
                ServerDTO servidortemp = new ServerDTO();
                servidortemp.Id = cuenta.Server;

                ServerDTO servidor = Controller.Server.getInstance().ObtenerServer(servidortemp);

                dgvCuentas.Rows.Add(cuenta.IdCuenta.ToString(),cuenta.User,servidor.Name);
            }
        }
Beispiel #5
0
        public Property getPropiedadEnviar(ServerDTO server)
        {
            try
            {
                Property propiedad = new Property();

                propiedad.set("mail.smtp.host", server.SmtpServer);
                propiedad.set("mail.smtp.port", server.SmtpPort);
                propiedad.set("mail.smtp.ssl.socketFactory.fallback", "false");
                propiedad.set("mail.smtp.starttls.enable", "false");
                propiedad.set("mail.smtp.ssl.enable", "true");
                propiedad.set("mail.smtp.ssl.checkserveridentity ", " true ");

                return propiedad;
            }
            catch (Exception ex) {
                return null;
            }
        }
Beispiel #6
0
        public void enviarCorreo(CorreoDTO correo)
        {
            try
            {
                CuentaDTO cuenta = Cuenta.getInstance().ObtenerCuentaDeCorreo(correo);
                ServerDTO server = new ServerDTO();

                server.Id = cuenta.Server;
                server = Server.getInstance().ObtenerServer(server);

                //Sesión

                MailMessage mensaje = new MailMessage();

                //Agrego destinatarios, guardados en la lista de OrigenDestino
                foreach (OrigenDestinoDTO od in correo.OrigenDestino) {
                    //Si es CC
                    if (od.Cc == true) mensaje.CC.Add(new MailAddress(od.Direccion));
                    //Si es CCO
                    else if (od.Cco == true) mensaje.Bcc.Add(new MailAddress(od.Direccion));
                    //Sino, es Para
                    else mensaje.To.Add(new MailAddress(od.Direccion));
                }

                mensaje.Subject = correo.Asunto;
                mensaje.Body = correo.Detalle;

                //Adjuntos
                //foreach (AttachmentDTO adjunto in correo.Adjuntos) {

                //}

                mensaje.From = new MailAddress(cuenta.User);

                AdminSmtp smtp = new AdminSmtp();
                smtp.ConectarSmtp(server, cuenta);

                //If enviado < 0 -> error al enviar
                int enviado = smtp.Enviar(mensaje, false);

            }
            catch (Exception ex) { }
        }
Beispiel #7
0
        /// <summary>
        /// Elimina un Servidor de la Base de Datos.
        /// </summary>
        /// <param name="server">Servidor a eliminar</param>
        /// <returns></returns>
        public int delete(ServerDTO server)
        {
            int generatedKey = -1;

            try
            {
                MySqlCommand myCommand = new MySqlCommand();
                myCommand.Connection = connection;

                myCommand.CommandText = "DELETE FROM server WHERE idserver = ?idserver";

                myCommand.Parameters.Add("?idserver", MySqlDbType.VarChar).Value = server.Id;

                //Puede ser que sea algo tipo generatedKey = myCommand.ExecuteNonQuery();
                generatedKey = myCommand.ExecuteNonQuery();

            }
            catch (Exception ex) { }

            return generatedKey;
        }
Beispiel #8
0
        /// <summary>
        /// Obtiene un servidor almacenado en la Base de Datos.
        /// </summary>
        /// <param name="server">Servidor a obtener</param>
        /// <returns>Servidor encontrado</returns>
        public ServerDTO get(ServerDTO server)
        {
            ServerDTO serverObtenido = new ServerDTO();

            try
            {
                connection.Open();

                MySqlCommand myCommand = new MySqlCommand();
                myCommand.Connection = connection;

                myCommand.CommandText = "SELECT idserver,nombre,popurl,popport,smtpurl,smtpport,isssl FROM server WHERE " +
                    "idserver = ?idserver";

                myCommand.Parameters.Add("?idserver", MySqlDbType.VarChar).Value = server.Id;

                MySqlDataReader myReader = myCommand.ExecuteReader();

                while (myReader.Read())
                {
                    serverObtenido.Id = myReader.GetInt32(0);
                    serverObtenido.Name = myReader.GetString(1);
                    serverObtenido.PopServer = myReader.GetString(2);
                    serverObtenido.PopPort = myReader.GetInt32(3);
                    serverObtenido.SmtpServer = myReader.GetString(4);
                    serverObtenido.SmtpPort = myReader.GetInt32(5);
                    serverObtenido.Ssl = myReader.GetBoolean(6);
                }

                myReader.Close();

                connection.Close();

            }
            catch (MySqlException ex) { }

            return serverObtenido;
        }
Beispiel #9
0
 /// <summary>
 /// Método para eliminar un servidor
 /// </summary>
 /// <param name="server">Cuenta que se va a eliminar</param>
 public void EliminarCuenta(ServerDTO server)
 {
     factory.startConnection();
     factory.getServer().delete(server);
     factory.closeConnection();
 }
Beispiel #10
0
        /// <summary>
        /// Agrega un nuevo servidor a la Base de Datos.
        /// </summary>
        /// <param name="server">Servidor a agregar</param>
        /// <returns>True si se agregó con éxito - False si ocurrió un error al ejecutar la consulta</returns>
        public int save(ServerDTO server)
        {
            int generatedKey;

            try
            {
                connection.Open();

                MySqlCommand myCommand = new MySqlCommand();
                myCommand.Connection = connection;

                myCommand.CommandText = "INSERT INTO server (nombre,popurl,smtpurl,popport,smtpport,isssl ) VALUES " +
                    "(?name, ?popserver, ?smtpserver, ?popport, ?smtpport, ?ssl)  ";

                myCommand.Parameters.Add("?name", MySqlDbType.VarChar).Value = server.Name;
                myCommand.Parameters.Add("?popserver", MySqlDbType.VarChar).Value = server.PopServer;
                myCommand.Parameters.Add("?smtpserver", MySqlDbType.VarChar).Value = server.SmtpServer;
                myCommand.Parameters.Add("?popport", MySqlDbType.VarChar).Value = server.PopPort;
                myCommand.Parameters.Add("?smtpport", MySqlDbType.VarChar).Value = server.SmtpPort;
                myCommand.Parameters.Add("?ssl",MySqlDbType.Int16).Value = server.Ssl;

                generatedKey = myCommand.ExecuteNonQuery();

                connection.Close();

            }
            catch (Exception)
            {

                throw ;
            }

            return generatedKey;
        }
Beispiel #11
0
        private void CargarCampos()
        {
            if (cuenta == null)
                return;

            txtUsuario.Text = cuenta.User;
            txtPassword.Text = cuenta.Password;

            ServerDTO servidortemp = new ServerDTO();
            servidortemp.Id = cuenta.Server;

            ServerDTO servidor = Controller.Server.getInstance().ObtenerServer(servidortemp);

            try
            {
                comboServidor.SelectedItem = servidor.Name;
            }
            catch (Exception ex) { }
        }
Beispiel #12
0
        public List<CorreoDTO> leerCorreo(CuentaDTO cuenta)
        {
            List<CorreoDTO> listaCorreos = new List<CorreoDTO>();

            try
            {
                ServerDTO server = new ServerDTO();
                server.Id = cuenta.Server;
                server = Server.getInstance().ObtenerServer(server);

                //Sesión
                AdminPop adminpop = new AdminPop();

                adminpop.ConectarPop(server, cuenta);

                List<MailMessage> listaMensajes = adminpop.ObtenerMensajes();

                //listaMensajes.Add(adminpop.ObtenerMensaje(30));
                //check fechas

                foreach (MailMessage mensajeObtenido in listaMensajes)
                {
                    CorreoDTO correo = new CorreoDTO();
                    correo.IdCuenta = cuenta.IdCuenta;

                    OrigenDestinoDTO od = new OrigenDestinoDTO();
                    List<OrigenDestinoDTO> listaOrigenes = new List<OrigenDestinoDTO>();

                    od.Direccion = PasajeCorreos.getInstance().obtenerCorreoBlank(mensajeObtenido.From.ToString());
                    od.Cco = false;
                    od.Cc = false;
                    correo.OrigenDestino = listaOrigenes;
                    correo.OrigenDestino.Add(od);

                    MailAddressCollection listaCC = mensajeObtenido.CC;

                    if (listaCC != null) {
                        foreach (MailAddress ma in listaCC) {
                            OrigenDestinoDTO ccdir = new OrigenDestinoDTO();
                            ccdir.Direccion = PasajeCorreos.getInstance().obtenerCorreoBlank(ma.ToString());
                            ccdir.Cc = true;
                            ccdir.Cco = false;
                            correo.OrigenDestino.Add(ccdir);
                        }

                    }

                    AttachmentCollection coleccionadjuntos = mensajeObtenido.Attachments;
                    List<AttachmentDTO> adjuntos = new List<AttachmentDTO>();

                    if (coleccionadjuntos.Count > 0)
                    {

                        //No puedo usar esto porque previamente limpié la tabla de correos, por lo tanto no hay id.
                        //int maxid = Controller.Correo.getInstance().UltimoIdCorreo(cuenta);

                        foreach (Attachment adj in coleccionadjuntos)
                        {
                            AttachmentDTO adjunto = new AttachmentDTO();

                            //adjunto.IdCorreo = maxid + 1;
                            adjunto.Name = adj.Name;
                            adjunto.Path = adj.ContentStream.ToString();        //OJO

                            adjuntos.Add(adjunto);
                        }
                    }

                    correo.Adjuntos = adjuntos;

                    //MIRAR ACA
                    string fechaStr = mensajeObtenido.Subject.Substring(mensajeObtenido.Subject.Length - 10, 10);

                    correo.Fecha = DateTime.Parse(fechaStr);

                    correo.Asunto = mensajeObtenido.Subject.Substring(0, (mensajeObtenido.Subject.Length - 10));
                    correo.NumeroServidorCorreo = mensajeObtenido.To.Count;

                    correo.Detalle = mensajeObtenido.Body;

                    correo.TipoCorreo = Tipo.RECIBIDO;
                    listaCorreos.Add(correo);
                }

            }
            catch (ArgumentNullException ex) {

            }

            return listaCorreos;
        }
Beispiel #13
0
 /// <summary>
 /// Método para obtener todos los datos existentes de un servidor
 /// </summary>
 /// <param name="server"></param>
 /// <returns></returns>
 public ServerDTO ObtenerServer(ServerDTO server)
 {
     factory.startConnection();
     ServerDTO serverObtenido = factory.getServer().get(server);
     factory.closeConnection();
     return serverObtenido;
 }
Beispiel #14
0
        /// <summary>
        /// Lista todos los servidores existentes en la Base de Datos.
        /// </summary>
        /// <returns>Lista de ServerDTO</returns>
        public List<ServerDTO> list()
        {
            ServerDTO serverObtenido;
            List<ServerDTO> list = new List<ServerDTO>();

            try {
                connection.Open();

                MySqlCommand myCommand = new MySqlCommand();
                myCommand.Connection = connection;

                myCommand.CommandText = "SELECT idserver,nombre,popurl,popport,smtpurl,smtpport,isssl FROM server";

                MySqlDataReader myReader = myCommand.ExecuteReader();

                while (myReader.Read()) {
                    serverObtenido = new ServerDTO();

                    serverObtenido.Id = myReader.GetInt32(0);
                    serverObtenido.Name = myReader.GetString(1);
                    serverObtenido.PopServer = myReader.GetString(2);
                    serverObtenido.PopPort = myReader.GetInt32(3);
                    serverObtenido.SmtpServer = myReader.GetString(4);
                    serverObtenido.SmtpPort = myReader.GetInt32(5);
                    serverObtenido.Ssl = myReader.GetBoolean(6);

                    list.Add(serverObtenido);
                }

                myReader.Close();

                connection.Close();

            }
            catch (MySqlException ex) { }

            return list;
        }
Beispiel #15
0
 /// <summary>
 /// Método para agregar un servidor
 /// </summary>
 /// <param name="server">Servidor que se va a agregar</param>
 public void AgregarServer(ServerDTO server)
 {
     factory.startConnection();
     factory.getServer().save(server);
     factory.closeConnection();
 }
Beispiel #16
0
        /// <summary>
        /// Recibe los correos electrónicos a través de POP.
        /// Los añade a la base de datos
        /// </summary>
        private void Recibir()
        {
            try
            {
                List<CuentaDTO> listaCuentas = Cuenta.getInstance().ListarCuentas();
                nombreCuentas = new Dictionary<int, string>();

                //Solo a modo de prueba: limpio los correos de la DB y vuelvo a cargar todo.

                foreach (CuentaDTO cuentaObtenida in listaCuentas)
                {
                    nombreCuentas.Add(cuentaObtenida.IdCuenta, cuentaObtenida.User);

                    //maxcorreos = Controller.Correo.getInstance().UltimoIdCorreo(cuentaObtenida);

                    //Cuento cuántos mails hay con esa cuenta en la DB
                    int cantidadMailsDb = Controller.Correo.getInstance().CantidadCorreos(cuentaObtenida);

                    //Cuento cuántos mails hay con esa cuenta en el server pop.
                    ServerDTO servidor = new ServerDTO();
                    servidor.Id = cuentaObtenida.Server;
                    servidor = Controller.Server.getInstance().ObtenerServer(servidor);
                    AdminPop adminpop = new AdminPop();
                    adminpop.ConectarPop(servidor, cuentaObtenida);
                    int cantidadMailsPop = adminpop.ObtenerCantidadMensajes();

                    //Si DB < POP
                    if (cantidadMailsDb < cantidadMailsPop && cantidadMailsDb != 0) {
                        //Por cada correo obtenido:
                        List<CorreoDTO> listaCorreosDb = Controller.Correo.getInstance().listar(false, false, cuentaObtenida);
                            //Borrar su OrigenDestino
                            //Borrar su Adjunto
                            //Borrar el correo
                        foreach (CorreoDTO correo in listaCorreosDb) {
                            Controller.Correo.getInstance().eliminarCorreo(correo);
                        }

                        //Obtengo lista de mails de POP
                        List<CorreoDTO> listaCorreos = Correo.MailServer.getInstance().leerCorreo(cuentaObtenida);
                        foreach (CorreoDTO correo in listaCorreos)
                        {
                            //Agrego mail
                            //Agrego OrigenDestino
                            //Agrego Adjunto
                            Controller.Correo.getInstance().agregarCorreo(correo);
                        }

                    }
                    //Si no hay correos en DB, cargar los de POP y agregarlos en DB.
                    else if (cantidadMailsDb == 0) {
                        List<CorreoDTO> listaCorreos = Correo.MailServer.getInstance().leerCorreo(cuentaObtenida);
                        foreach (CorreoDTO correo in listaCorreos)
                        {
                            //Agrego mail
                            //Agrego OrigenDestino
                            //Agrego Adjunto
                            Controller.Correo.getInstance().agregarCorreo(correo);
                        }
                    }

                }

            }
            catch (Exception ex)
            {

            }
        }
Beispiel #17
0
        /// <summary>
        /// Actualiza un Servidor.
        /// </summary>
        /// <param name="server">Servidor a actualizar</param>
        /// <returns></returns>
        public int update(ServerDTO server)
        {
            int generatedKey = -1;

            try {
                MySqlCommand myCommand = new MySqlCommand();
                myCommand.Connection = connection;

                myCommand.CommandText = "UPDATE server SET nombre = ?name, popurl = ?popserver, smtpurl = ?smtpserver, popport = ?popport, smtpport = ?smtpport, isssl = ?ssl WHERE " +
                    "idserver = ?idserver";

                myCommand.Parameters.Add("?name", MySqlDbType.VarChar).Value = server.Name;
                myCommand.Parameters.Add("?popserver", MySqlDbType.VarChar).Value = server.PopServer;
                myCommand.Parameters.Add("?smtpserver", MySqlDbType.VarChar).Value = server.SmtpServer;
                myCommand.Parameters.Add("?popport", MySqlDbType.VarChar).Value = server.PopPort;
                myCommand.Parameters.Add("?smtpport", MySqlDbType.VarChar).Value = server.SmtpPort;
                myCommand.Parameters.Add("?ssl", MySqlDbType.VarChar).Value = server.Ssl;

                myCommand.Parameters.Add("?idserver", MySqlDbType.VarChar).Value = server.Id;

                //Puede ser que sea algo tipo generatedKey = myCommand.ExecuteNonQuery();
                generatedKey = myCommand.ExecuteNonQuery();

            }
            catch (Exception ex) { }

            return generatedKey;
        }
Beispiel #18
0
 /// <summary>
 /// Método para modificar un servidor
 /// </summary>
 /// <param name="server">Servidor que se va a modificar</param>
 public void ModificarCuenta(ServerDTO server)
 {
     factory.startConnection();
     factory.getServer().update(server);
     factory.closeConnection();
 }
Beispiel #19
0
        private void dgvServidores_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgvServidores.Rows.Count == 0)
                return;

            DataGridViewRow fila = dgvServidores.SelectedRows[0];
            int idservidor = int.Parse(fila.Cells[0].Value.ToString());

            ServerDTO serverSeleccionado = new ServerDTO();
            serverSeleccionado.Id = idservidor;
            server = Controller.Server.getInstance().ObtenerServer(serverSeleccionado);

            CargarCampos();
        }