private static UserOofSettings CreateDefaultUserOofSettings(MailboxSession itemStore)
        {
            UserOofSettings userOofSettings = UserOofSettings.CreateDefault();

            userOofSettings.ExternalAudience = ExternalAudience.All;
            if (OofStateHandler.Get(itemStore))
            {
                userOofSettings.OofState = OofState.Enabled;
            }
            else
            {
                userOofSettings.OofState = OofState.Disabled;
            }
            UserOofSettingsStorage.Tracer.TraceDebug <IExchangePrincipal>(0L, "Mailbox:{0}: Created default OOF settings, saving to mailbox", itemStore.MailboxOwner);
            UserOofSettingsStorage.TracerPfd.TracePfd <int, IExchangePrincipal>(0L, "PFD IWO {0} Mailbox:{1}: Created default OOF settings, saving to mailbox", 17559, itemStore.MailboxOwner);
            try
            {
                UserOofSettingsStorage.SaveUserOofSettings(itemStore, userOofSettings);
            }
            catch (VirusException arg)
            {
                UserOofSettingsStorage.settingsStorageHandler.Delete(itemStore);
                UserOofSettingsStorage.Tracer.TraceError <IExchangePrincipal, VirusException>(0L, "Mailbox:{0}: Exception on create default useroofsettings, exception = {1}, re-creating default useroofsettings.", itemStore.MailboxOwner, arg);
                userOofSettings.InternalReply.RawMessage = Strings.descOOFVirusDetectedOofReplyMessage;
                userOofSettings.ExternalReply.RawMessage = null;
                userOofSettings.OofState = OofState.Disabled;
                UserOofSettingsStorage.SaveUserOofSettings(itemStore, userOofSettings);
            }
            return(userOofSettings);
        }
        public static void SaveUserOofSettings(MailboxSession itemStore, UserOofSettings userOofSettings)
        {
            UserOofSettingsSerializer o = UserOofSettingsSerializer.Serialize(userOofSettings);

            using (StringWriter stringWriter = new StringWriter())
            {
                using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings
                {
                    CheckCharacters = false
                }))
                {
                    UserOofSettingsSerializer.Serializer.Serialize(xmlWriter, o);
                    string      body        = stringWriter.ToString();
                    VersionedId versionedId = UserOofSettingsStorage.settingsStorageHandler.SetItemContent(itemStore, body);
                    itemStore.Mailbox[MailboxSchema.UserOofSettingsItemId] = versionedId.ObjectId.ProviderLevelItemId;
                }
            }
            UserOofSettingsStorage.Tracer.TraceDebug <IExchangePrincipal>(0L, "Mailbox:{0}: Adding OOF rules", itemStore.MailboxOwner);
            using (RuleGenerator ruleGenerator = new RuleGenerator(itemStore, userOofSettings))
            {
                ruleGenerator.OnUserOofSettingsChanges();
            }
            UserOofSettingsStorage.Tracer.TraceDebug <IExchangePrincipal>(0L, "Mailbox:{0}: OOF rules added, setting OOF mailbox table properties.", itemStore.MailboxOwner);
            OofStateHandler.Set(itemStore, userOofSettings.OofState == OofState.Enabled, (userOofSettings.UserChangeTime != null) ? userOofSettings.UserChangeTime.Value : DateTime.UtcNow);
            itemStore.Mailbox[MailboxSchema.OofScheduleStart] = ((userOofSettings.OofState == OofState.Scheduled) ? ((ExDateTime)userOofSettings.StartTime) : UserOofSettingsStorage.Date1601Utc);
            itemStore.Mailbox[MailboxSchema.OofScheduleEnd]   = ((userOofSettings.OofState == OofState.Scheduled) ? ((ExDateTime)userOofSettings.EndTime) : UserOofSettingsStorage.Date1601Utc);
            itemStore.Mailbox.Save();
            itemStore.Mailbox.Load();
        }
示例#3
0
 internal bool GlobalOofEnabled(MailboxSession itemStore)
 {
     return(OofStateHandler.Get(itemStore));
 }