public JsonResult RecuperarContrasena(string correo)
        {
            UsuarioBE usuario = UsuarioLN.ObtenerUsuarioPorCorreo(correo);

            if (usuario == null)
            {
                var jResult = Json(new { success = false, message = "Este correo no ha sido registrado" }, JsonRequestBehavior.AllowGet);
                jResult.MaxJsonLength = int.MaxValue;
                return(jResult);
            }

            string fechaHoraExpiracion = DateTime.Now.AddMinutes(10).ToString("yyyy-MM-ddTHH:mm:ss.fffK");
            string idUsuario           = usuario.ID_USUARIO.ToString();

            string fieldServer = "[SERVER]", fieldNombres = "[NOMBRES]", fieldIdUsuario = "[ID_USUARIO]";

            string[] fields        = new string[] { fieldServer, fieldNombres, fieldIdUsuario };
            string[] fieldsRequire = new string[] { fieldServer, fieldNombres, fieldIdUsuario };
            Dictionary <string, string> dataBody = new Dictionary <string, string> {
                [fieldServer] = ConfigurationManager.AppSettings["Server"], [fieldNombres] = usuario.NOMBRES, [fieldIdUsuario] = usuario.ID_USUARIO.ToString()
            };
            string subject = $"{usuario.NOMBRES} {usuario.APELLIDOS}, recupere su contraseña";
            MailAddressCollection mailTo = new MailAddressCollection();

            mailTo.Add(new MailAddress(usuario.CORREO, $"{usuario.NOMBRES} {usuario.APELLIDOS}"));

            Task.Factory.StartNew(() => mailing.SendMail(Mailing.Templates.RecuperarClave, dataBody, fields, fieldsRequire, subject, mailTo));

            Session["recuperar"] = true;
            var jsonResult = Json(new { success = true, message = $"se envió link de recuperación de contraseña al correo {correo}" }, JsonRequestBehavior.AllowGet);

            jsonResult.MaxJsonLength = int.MaxValue;
            return(jsonResult);
        }