/// <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; }
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); }
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); } }
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); } }
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; } }
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) { } }
/// <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; }
/// <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; }
/// <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(); }
/// <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; }
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) { } }
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; }
/// <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; }
/// <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; }
/// <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(); }
/// <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) { } }
/// <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; }
/// <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(); }
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(); }