public ActionResult UnarchiveMail(Int64 mailId, Int64 mailAccountId = 0) { ISession session = NHibernateManager.OpenSession(); ITransaction tran = session.BeginTransaction(); try { MailAccount currentMailAccount = this.GetMailAccount(mailAccountId); Mail mail = new Mail(mailId, session); Label inboxLabel = Label.FindBySystemName(currentMailAccount, "Inbox", session); mail.Unarchive(inboxLabel, session); //DB tran.Commit(); currentMailAccount.UnarchiveMail(mail); //IMAP return(Json(new { success = true }, JsonRequestBehavior.AllowGet)); } catch (Exception exc) { tran.Rollback(); Log.LogException(exc, "Parametros del metodo: mailId(" + mailId.ToString() + "), mailAccountId(" + mailAccountId.ToString() + ")."); return(Json(new { success = false, message = "Error al desarchivar mail." }, JsonRequestBehavior.AllowGet)); } finally { session.Close(); } }