public HttpResponseMessage UpdateSmtpSettings(UpdateSmtpSettingsRequest request)
        {
            try
            {
                var portalId = PortalSettings.Current.PortalId;
                PortalController.UpdatePortalSetting(portalId, "SMTPmode", request.SmtpServerMode, false);

                //admins can only change site settings
                PortalController.UpdatePortalSetting(portalId, "SMTPServer", request.SmtpServer, false);
                PortalController.UpdatePortalSetting(portalId, "SMTPConnectionLimit", request.SmtpConnectionLimit, false);
                PortalController.UpdatePortalSetting(portalId, "SMTPMaxIdleTime", request.SmtpMaxIdleTime, false);
                PortalController.UpdatePortalSetting(portalId, "SMTPAuthentication",
                                                     request.SmtpAuthentication.ToString(), false);
                PortalController.UpdatePortalSetting(portalId, "SMTPUsername", request.SmtpUsername, false);
                PortalController.UpdateEncryptedString(portalId, "SMTPPassword", request.SmtpPassword,
                                                       Config.GetDecryptionkey());
                PortalController.UpdatePortalSetting(portalId, "SMTPEnableSSL", request.EnableSmtpSsl ? "Y" : "N", false);

                DataCache.ClearCache();
                return(Request.CreateResponse(HttpStatusCode.OK, new { success = true }));
            }
            catch (Exception exc)
            {
                Logger.Error(exc);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }
        public HttpResponseMessage UpdateSmtpSettings(UpdateSmtpSettingsRequest request)
        {
            try
            {
                var portalId = PortalSettings.Current.PortalId;
                PortalController.UpdatePortalSetting(portalId, "SMTPmode", request.SmtpServerMode, false);

                if (request.SmtpServerMode == "h")
                {
                    HostController.Instance.Update("SMTPServer", request.SmtpServer, false);
                    HostController.Instance.Update("SMTPConnectionLimit", request.SmtpConnectionLimit, false);
                    HostController.Instance.Update("SMTPMaxIdleTime", request.SmtpMaxIdleTime, false);
                    HostController.Instance.Update("SMTPAuthentication", request.SmtpAuthentication.ToString(), false);
                    HostController.Instance.Update("SMTPUsername", request.SmtpUsername, false);
                    HostController.Instance.UpdateEncryptedString("SMTPPassword", request.SmtpPassword,
                                                                  Config.GetDecryptionkey());
                    HostController.Instance.Update("HostEmail", request.SmtpHostEmail);
                    HostController.Instance.Update("SMTPEnableSSL", request.EnableSmtpSsl ? "Y" : "N", false);
                    HostController.Instance.Update("MessageSchedulerBatchSize",
                                                   request.MessageSchedulerBatchSize.ToString(), false);
                }
                else
                {
                    PortalController.UpdatePortalSetting(portalId, "SMTPServer", request.SmtpServer, false);
                    PortalController.UpdatePortalSetting(portalId, "SMTPConnectionLimit", request.SmtpConnectionLimit, false);
                    PortalController.UpdatePortalSetting(portalId, "SMTPMaxIdleTime", request.SmtpMaxIdleTime, false);
                    PortalController.UpdatePortalSetting(portalId, "SMTPAuthentication",
                                                         request.SmtpAuthentication.ToString(), false);
                    PortalController.UpdatePortalSetting(portalId, "SMTPUsername", request.SmtpUsername, false);
                    PortalController.UpdateEncryptedString(portalId, "SMTPPassword", request.SmtpPassword, Config.GetDecryptionkey());
                    PortalController.UpdatePortalSetting(portalId, "SMTPEnableSSL", request.EnableSmtpSsl ? "Y" : "N", false);
                }

                DataCache.ClearCache();
                return(this.Request.CreateResponse(HttpStatusCode.OK, new { success = true }));
            }
            catch (Exception exc)
            {
                Logger.Error(exc);
                return(this.Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc));
            }
        }