public bool SendMail(Email email)
        {
            bool response = false;
            var config = new ConfigService();

            try
            {
                var message = new MailMessage();

                message.From = string.IsNullOrEmpty(email.From)
                                   ? new MailAddress(config.FromAddress)
                                   : new MailAddress(email.From);

                foreach (var to in email.To)
                {
                    message.To.Add(to);
                }
                foreach (var cc in email.Cc)
                {
                    message.CC.Add(cc);
                }
                message.Subject = email.Subject;
                message.Body = email.Body;

                var client = new SmtpClient(config.Server, config.Port);
                client.EnableSsl = config.SSL;
                var credential = new NetworkCredential(config.ServerUser, config.ServerPassword);
                client.Credentials = credential;

                response = true;

                client.Send(message);
            }
            catch (SmtpException ex)
            {
                throw new Exception(ex.InnerException.Message);
            }
            return response;
        }
        public JsonResult RecuperaContraseña(RetrivePasswordModel retrievePassword)
        {
            var response = 1;

            if (ModelState.IsValid)
            {
                var successfullSending = 2;
                var errorSending = 4;

                if (Security.ExistUser(retrievePassword.Username))
                {
                    var usuario = Security.GetUserByUserName(retrievePassword.Username);
                    if (usuario.Activo)
                    {
                        if (retrievePassword.Email.ToUpper() == usuario.Email.ToUpper())
                        {
                            var mail = new ServiceMailer();
                            var message = new Email();

                            message.To.Add(usuario.Email);
                            message.Subject = "Recuperación de Contraseña.";
                            message.Body = "Su contraseña de acceso es: " + Security.Decript(usuario.Password);

                            response = mail.SendMail(message) ? successfullSending : errorSending;
                        }
                        else
                        {
                            response = 5;
                        }
                    }
                    else
                    {
                        response = 3;
                    }
                }
            }

            return Json(response);
        }
        public bool SendNotifications(Incidente incidente)
        {
            var sb = new StringBuilder();
            var res = false;
            var userId = 1;//(int) Session["userNameId"];
            var empresasId = (from empresa in db.relUsuarioEmpresa where empresa.UsuarioId == userId select empresa);

            var emails = (from email in db.AlertasIncidente
                          //join e in db.relUsuarioEmpresa on email.EmpresaId equals e.EmpresaId
                          where email.TipoIncidenteId.Equals(incidente.TipoIncidenteId) //&& e.UsuarioId == userId
                          select email);
            var mensaje = string.Empty;

            var TipoIncidente = db.TiposIncidente.FirstOrDefault(e => e.Id == incidente.TipoIncidenteId);

            foreach (var alerta in emails)
            {
                var nomEmpresa = (db.Empresas.FirstOrDefault(e => e.Id == incidente.EmpresaId));
                var Estado = (db.Estados.FirstOrDefault(e => e.Id == incidente.EstadoId));
                var ciudad = (db.Ciudades.FirstOrDefault(c => c.Id == incidente.CiudadId));
                var zona = (db.Zonas.FirstOrDefault(z => z.Id == incidente.ZonaId));

                var mail = new ServiceMailer();
                var message = new Email();
                var email = alerta.Emails.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
                email.ForEach(e=> message.To.Add(e));
                message.Subject = "Alerta de incidente.";
                mensaje += "Fecha y hora del incidente: " + incidente.FechaIncidente + "\r\n";
                mensaje += "Tipo de Incidente: " + TipoIncidente.Nombre + "\r\n";
                mensaje += "Empresa: " + nomEmpresa.Nombre + "\r\n";
                mensaje += string.Format("Ubicación: Estado: {0}, Ciudad: {1}, Colonia: {2}, Calle: {3}, Entre calles: {4}", Estado.Nombre, ciudad.Nombre, incidente.Colonia,
                                    incidente.Calle, incidente.EntreCalles) + "\r\n";
                mensaje += string.Format("Zona: {0}", incidente.ZonaId != null ? zona.Nombre : "No definida");
                message.Body = mensaje;
                foreach (var empresa in empresasId)
                {
                    if (alerta.RecibirMiEmpresa && empresa.EmpresaId == alerta.EmpresaId)
                    {
                        res = mail.SendMail(message);
                    }

                    if (alerta.RecibirOtrasEmpresas && alerta.EmpresaId != empresa.EmpresaId)
                    {
                        res = mail.SendMail(message);
                    }
                }
            }

            return res;
        }