Example #1
0
        public static StoreObjectId GetOrCreateAdminAuditLogsFolderId(MailboxSession mailboxSession)
        {
            StoreObjectId storeObjectId = mailboxSession.GetAdminAuditLogsFolderId();

            if (storeObjectId == null)
            {
                if (mailboxSession.GetDefaultFolderId(DefaultFolderType.RecoverableItemsRoot) == null)
                {
                    AdminAuditLogHelper.Tracer.TraceDebug <string>(0L, "AdminAuditLogHelper: Create the folder 'RecoverableItemsRoot' in the mailbox '{0}'", mailboxSession.MailboxOwner.MailboxInfo.PrimarySmtpAddress.ToString());
                    mailboxSession.CreateDefaultFolder(DefaultFolderType.RecoverableItemsRoot);
                }
                AdminAuditLogHelper.Tracer.TraceDebug <string>(0L, "AdminAuditLogHelper: Create the folder 'AdminAuditLogs' in the mailbox '{0}'", mailboxSession.MailboxOwner.MailboxInfo.PrimarySmtpAddress.ToString());
                storeObjectId = mailboxSession.CreateDefaultFolder(DefaultFolderType.AdminAuditLogs);
            }
            return(storeObjectId);
        }
Example #2
0
        private void ChangeDestinationFolder(DefaultFolderType folderType, StoreDriverDeliveryEventArgs args)
        {
            StoreDriverDeliveryEventArgsImpl storeDriverDeliveryEventArgsImpl = (StoreDriverDeliveryEventArgsImpl)args;
            string         text           = args.MailItem.FromAddress.ToString();
            MailboxSession mailboxSession = storeDriverDeliveryEventArgsImpl.MailboxSession;
            string         text2          = storeDriverDeliveryEventArgsImpl.MailRecipient.MsgId.ToString();
            bool           flag           = this.IsSourceEhaMigration(storeDriverDeliveryEventArgsImpl.MailItem, text2);

            UnJournalAgent.Tracer.TraceDebug(0L, "ChangeDestinationFolder: MessageId {0}, Sender {1}, isSourceEha {2}, folderType {3} ", new object[]
            {
                text2,
                text,
                flag.ToString(),
                folderType.ToString()
            });
            if (DefaultFolderType.LegacyArchiveJournals == folderType || !flag)
            {
                UnJournalAgent.Tracer.TraceDebug <string, string>(0L, "ChangeDestinationFolder: MessageId {0}, Sender {1}, Source is not EHA or this is directed to legacyarchivejournals folder in journalndr mailbox", text2, text);
                StoreId storeId = mailboxSession.GetDefaultFolderId(folderType);
                if (storeId == null)
                {
                    storeId = mailboxSession.CreateDefaultFolder(folderType);
                }
                if (storeId != null)
                {
                    storeDriverDeliveryEventArgsImpl.DeliverToFolder = storeId;
                    return;
                }
            }
            else
            {
                UnJournalAgent.Tracer.TraceDebug <string, string>(0L, "ChangeDestinationFolder: MessageId {0}, Sender {1}, This is a migration message from EHA, put it in the hidden folder", text2, text);
                storeDriverDeliveryEventArgsImpl.DeliverToFolder = this.GetCreateFolderIdUnderGivenParentFolder("MigrationFolder", folderType.ToString(), mailboxSession);
            }
        }
 public static void CheckAndCreateDefaultFolders(MailboxSession session)
 {
     if (session.GetDefaultFolderId(DefaultFolderType.AllItems) == null)
     {
         session.CreateDefaultFolder(DefaultFolderType.AllItems);
     }
 }
Example #4
0
        internal static Folder CreateELCRootFolder(MailboxSession mailboxSession, string elcRootUrl)
        {
            string arg = mailboxSession.MailboxOwner.MailboxInfo.PrimarySmtpAddress.ToString();

            ProvisionedFolderCreator.Tracer.TraceDebug <string>(0L, "'{0}': Attempting to create the ELC Root Folder.", arg);
            if (mailboxSession.CreateDefaultFolder(DefaultFolderType.ElcRoot) == null)
            {
                throw new ELCRootFailureException(Strings.descFailedToCreateELCRoot(mailboxSession.MailboxOwner.MailboxInfo.PrimarySmtpAddress.ToString()), null);
            }
            Folder folder = Folder.Bind(mailboxSession, DefaultFolderType.ElcRoot, new PropertyDefinition[]
            {
                FolderSchema.FolderHomePageUrl
            });

            if (!string.IsNullOrEmpty(elcRootUrl))
            {
                ProvisionedFolderCreator.Tracer.TraceDebug <string, string>(0L, "'{0}': Attempting to set the ELC Root Folder URL to '{1}'.", arg, elcRootUrl);
                ElcMailboxHelper.SetPropAndTrace(folder, FolderSchema.FolderHomePageUrl, elcRootUrl);
                folder.ClassName = Globals.ElcRootFolderClass;
                FolderSaveResult folderSaveResult = folder.Save();
                if (folderSaveResult.OperationResult != OperationResult.Succeeded)
                {
                    ProvisionedFolderCreator.Tracer.TraceError <SmtpAddress>(0L, "{0}: Unable to set the ELC Root Folder home page. Will attempt this again on the next run.", mailboxSession.MailboxOwner.MailboxInfo.PrimarySmtpAddress);
                }
                folder.Load();
            }
            return(folder);
        }
Example #5
0
        private SearchFolder GetSearchFolder(MailboxSession session)
        {
            bool          flag          = false;
            StoreObjectId storeObjectId = this.GetCvsFolderIdIfPresent(session);
            SearchFolder  searchFolder  = null;

            try
            {
                if (storeObjectId == null)
                {
                    storeObjectId = session.CreateDefaultFolder(DefaultFolderType.CalendarVersionStore);
                }
                try
                {
                    searchFolder = SearchFolder.Bind(session, storeObjectId);
                }
                catch (ObjectNotFoundException innerException)
                {
                    ExTraceGlobals.DefaultFoldersTracer.TraceError <string, StoreObjectId>((long)this.GetHashCode(), "CalendarVersionStoreGateway::GetSearchFolder - No item is found with the CVS search folder ID (Session Display Name: {0}; Folder ID: {1}).", session.DisplayName, storeObjectId);
                    throw new CalendarVersionStoreNotPopulatedException(false, SearchState.None, TimeSpan.Zero, innerException);
                }
                catch (WrongObjectTypeException innerException2)
                {
                    ExTraceGlobals.DefaultFoldersTracer.TraceError <string, StoreObjectId>((long)this.GetHashCode(), "CalendarVersionStoreGateway::GetSearchFolder - The CVS search folder ID does not belong to a search folder (Session Display Name: {0}; Folder ID: {1}).", session.DisplayName, storeObjectId);
                    throw new CalendarVersionStoreNotPopulatedException(false, SearchState.None, TimeSpan.Zero, innerException2);
                }
                SearchState folderState;
                if (!this.IsSearchFolderPopulated(searchFolder, out folderState))
                {
                    if (this.Policy.WaitForPopulation)
                    {
                        using (SearchFolderAsyncSearch searchFolderAsyncSearch = new SearchFolderAsyncSearch(session, storeObjectId, null, null))
                        {
                            if (!this.IsSearchFolderPopulated(searchFolder, out folderState) && !searchFolderAsyncSearch.AsyncResult.AsyncWaitHandle.WaitOne(this.Policy.WaitTimeForPopulation))
                            {
                                ExTraceGlobals.DefaultFoldersTracer.TraceDebug <TimeSpan, string>((long)this.GetHashCode(), "CalendarVersionStoreGateway::GetSearchFolder - The CVS search folder is not populated, and timeout ({0}) is passed (Session Display Name: {1}).", this.Policy.WaitTimeForPopulation, session.DisplayName);
                                throw new CalendarVersionStoreNotPopulatedException(true, folderState, this.Policy.WaitTimeForPopulation);
                            }
                            goto IL_151;
                        }
                    }
                    ExTraceGlobals.DefaultFoldersTracer.TraceDebug <string>((long)this.GetHashCode(), "CalendarVersionStoreGateway::GetSearchFolder - The CVS search folder is not populated, and query policy has no wait time specified (Session Display Name: {0}).", session.DisplayName);
                    throw new CalendarVersionStoreNotPopulatedException(true, folderState, TimeSpan.Zero);
                }
IL_151:
                flag = true;
            }
            finally
            {
                if (!flag && searchFolder != null)
                {
                    searchFolder.Dispose();
                }
            }
            return(searchFolder);
        }
        public static StoreObjectId GetConversationActionsFolderId(MailboxSession session, bool createIfMissing)
        {
            Util.ThrowOnNullArgument(session, "session");
            StoreObjectId storeObjectId = session.GetDefaultFolderId(DefaultFolderType.ConversationActions);

            if (storeObjectId == null && createIfMissing)
            {
                storeObjectId = session.CreateDefaultFolder(DefaultFolderType.ConversationActions);
            }
            return(storeObjectId);
        }
Example #7
0
        // Token: 0x06000AB2 RID: 2738 RVA: 0x00045DB4 File Offset: 0x00043FB4
        private static StoreObjectId GetUMSearchFolderId(MailboxSession itemStore)
        {
            StoreObjectId storeObjectId = itemStore.GetDefaultFolderId(DefaultFolderType.UMVoicemail);

            if (storeObjectId == null)
            {
                ExTraceGlobals.MWITracer.TraceDebug <string>(0L, "MwiAssistant.GetUMSearchFolderId(): Creating search folder for user {0}", itemStore.MailboxOwner.MailboxInfo.DisplayName);
                storeObjectId = itemStore.CreateDefaultFolder(DefaultFolderType.UMVoicemail);
            }
            return(storeObjectId);
        }
        public static ParkedMeetingMessage Create(MailboxSession mailboxSession)
        {
            StoreObjectId storeObjectId = mailboxSession.GetDefaultFolderId(DefaultFolderType.ParkedMessages);

            if (storeObjectId == null)
            {
                storeObjectId = mailboxSession.CreateDefaultFolder(DefaultFolderType.ParkedMessages);
            }
            ParkedMeetingMessage parkedMeetingMessage = ItemBuilder.CreateNewItem <ParkedMeetingMessage>(mailboxSession, storeObjectId, ItemCreateInfo.ParkedMeetingMessageInfo);

            parkedMeetingMessage[StoreObjectSchema.ItemClass] = "IPM.Parked.MeetingMessage";
            return(parkedMeetingMessage);
        }
Example #9
0
        public static StoreObjectId EnsureSyncIssueFolder(MailboxSession session)
        {
            if (!Utils.IsTeamMailbox(session))
            {
                throw new ArgumentException("session must be associated with a TeamMailbox");
            }
            StoreObjectId storeObjectId = session.GetDefaultFolderId(DefaultFolderType.DocumentSyncIssues);

            if (storeObjectId == null)
            {
                storeObjectId = session.CreateDefaultFolder(DefaultFolderType.DocumentSyncIssues);
            }
            return(storeObjectId);
        }
Example #10
0
        private StoreId GetSentItemsFolderIdBySource(DeliverableMailItem mailItem, string messageId, MailboxSession session)
        {
            if (this.IsSourceEhaMigration(mailItem, messageId))
            {
                return(this.GetCreateFolderIdUnderGivenParentFolder("MigrationFolder", DefaultFolderType.SentItems.ToString(), session));
            }
            StoreId storeId = session.GetDefaultFolderId(DefaultFolderType.SentItems);

            if (storeId == null)
            {
                storeId = session.CreateDefaultFolder(DefaultFolderType.SentItems);
            }
            return(storeId);
        }
 public static void EnableBirthdayCalendar(MailboxSession session)
 {
     if (!BirthdayCalendar.UserHasBirthdayCalendarFolder(session))
     {
         ExTraceGlobals.BirthdayCalendarTracer.TraceDebug <Guid>(0L, "BirthdayCalendar::EnableBirthdayCalendar CreateDefaultFolder. MailboxGuid:{0}", session.MailboxGuid);
         session.CreateDefaultFolder(DefaultFolderType.BirthdayCalendar);
         return;
     }
     ExTraceGlobals.BirthdayCalendarTracer.TraceDebug <Guid>(0L, "BirthdayCalendar::EnableBirthdayCalendar BindWithRecovery. MailboxGuid:{0}", session.MailboxGuid);
     BirthdayCalendar.BindWithRecovery(session, delegate(CalendarFolder birthdayCalendar)
     {
         BirthdayCalendar.SetBirthdayCalendarHiddenValue(birthdayCalendar, false);
     });
 }
Example #12
0
        public static StoreObjectId ValidateClutterFolder(MailboxSession session)
        {
            StoreObjectId storeObjectId = session.GetDefaultFolderId(DefaultFolderType.Clutter);

            if (storeObjectId == null)
            {
                storeObjectId = session.CreateDefaultFolder(DefaultFolderType.Clutter);
            }
            else
            {
                session.TryFixDefaultFolderId(DefaultFolderType.Clutter, out storeObjectId);
            }
            return(storeObjectId);
        }
Example #13
0
        internal static Folder GetSyncFolderRoot(MailboxSession mailboxSession, ISyncLogger syncLogger = null)
        {
            if (syncLogger == null)
            {
                syncLogger = TracingLogger.Singleton;
            }
            StoreObjectId storeObjectId = mailboxSession.GetDefaultFolderId(DefaultFolderType.SyncRoot);

            if (storeObjectId == null)
            {
                syncLogger.TraceDebug <Guid>(ExTraceGlobals.SyncTracer, 0L, "[SyncStateStorage.GetSyncFolderRoot] ExchangeSyncData folder missing for mailbox {0}.  Creating it now.", mailboxSession.MailboxGuid);
                storeObjectId = mailboxSession.CreateDefaultFolder(DefaultFolderType.SyncRoot);
            }
            return(Folder.Bind(mailboxSession, storeObjectId, SyncStateStorage.loggingEnabledAsArray));
        }
Example #14
0
 public static void CheckAndCreateFolder(MailboxSession session)
 {
     Util.ThrowOnNullArgument(session, "session");
     if (session.LogonType == LogonType.Delegated)
     {
         return;
     }
     foreach (DefaultFolderType defaultFolderType in DumpsterFolderHelper.dumpsterFoldersTypes)
     {
         if (session.GetDefaultFolderId(defaultFolderType) == null)
         {
             StoreObjectId storeObjectId = session.CreateDefaultFolder(defaultFolderType);
             session.GetDefaultFolderId(defaultFolderType);
         }
     }
 }
        internal static void SendMessage(MailboxSession mailboxSession, ADUser groupAdUser, string attachedMessageBody)
        {
            ArgumentValidator.ThrowIfNull("groupMailbox", mailboxSession);
            ArgumentValidator.ThrowIfNull("groupAdUser", groupAdUser);
            ArgumentValidator.ThrowIfNull("attachedMessageBody", attachedMessageBody);
            StoreObjectId storeObjectId = mailboxSession.GetDefaultFolderId(DefaultFolderType.TemporarySaves);

            if (storeObjectId == null)
            {
                storeObjectId = mailboxSession.CreateDefaultFolder(DefaultFolderType.TemporarySaves);
            }
            using (GroupMailboxJoinRequestMessageItem groupMailboxJoinRequestMessageItem = GroupMailboxJoinRequestMessageItem.Create(mailboxSession, storeObjectId))
            {
                new GroupJoinRequestMessageComposer(mailboxSession, groupAdUser, attachedMessageBody).WriteToMessage(groupMailboxJoinRequestMessageItem);
                groupMailboxJoinRequestMessageItem.Send();
            }
        }
Example #16
0
        private static Folder SafeBindToWorkingSetFolder(StoreSession session)
        {
            Folder result = null;

            try
            {
                result = Folder.Bind(session, DefaultFolderType.WorkingSet);
            }
            catch (ObjectNotFoundException)
            {
                MailboxSession mailboxSession = session as MailboxSession;
                if (mailboxSession == null)
                {
                    throw;
                }
                mailboxSession.CreateDefaultFolder(DefaultFolderType.WorkingSet);
                result = Folder.Bind(session, DefaultFolderType.WorkingSet);
            }
            return(result);
        }
        private Folder GetSyncRootFolder(MailboxSession mailboxSession, ISyncLogger syncLogger = null)
        {
            if (syncLogger == null)
            {
                syncLogger = TracingLogger.Singleton;
            }
            Folder result = null;

            try
            {
                result = Folder.Bind(mailboxSession, DefaultFolderType.SyncRoot);
            }
            catch (ObjectNotFoundException)
            {
                syncLogger.TraceDebug <SmtpAddress>(ExTraceGlobals.SyncTracer, (long)this.GetHashCode(), "[UserSyncStateMetadata.GetDevice] Missing SyncRoot folder for mailbox {0}.  Recreating.", mailboxSession.MailboxOwner.MailboxInfo.PrimarySmtpAddress);
                mailboxSession.CreateDefaultFolder(DefaultFolderType.SyncRoot);
                result = Folder.Bind(mailboxSession, DefaultFolderType.SyncRoot);
            }
            return(result);
        }
Example #18
0
        private void GetELCItemProperties(MailboxSession mailboxSession, string messageId)
        {
            if (mailboxSession.GetDefaultFolderId(DefaultFolderType.AllItems) == null)
            {
                mailboxSession.CreateDefaultFolder(DefaultFolderType.AllItems);
            }
            QueryFilter queryFilter = new ComparisonFilter(ComparisonOperator.Equal, ItemSchema.InternetMessageId, messageId);

            object[][] array = null;
            foreach (DefaultFolderType defaultFolderType in TestArchiveConnectivityTask.mailboxFolders)
            {
                if (mailboxSession.GetDefaultFolderId(defaultFolderType) != null)
                {
                    using (Folder folder = Folder.Bind(mailboxSession, defaultFolderType))
                    {
                        using (QueryResult queryResult = folder.ItemQuery(ItemQueryType.None, queryFilter, null, new PropertyDefinition[]
                        {
                            ItemSchema.Id,
                            StoreObjectSchema.ParentItemId
                        }))
                        {
                            array = queryResult.GetRows(queryResult.EstimatedRowCount);
                            if (array.Length > 0)
                            {
                                for (int j = 0; j < array.Length; j++)
                                {
                                    VersionedId storeId = (VersionedId)array[j][0];
                                    using (Item item = Item.Bind(mailboxSession, storeId, TestArchiveConnectivityTask.mrmStoreProps))
                                    {
                                        if (item != null)
                                        {
                                            this.mrmPropReport.AppendLine(this.GetMRMProps(item));
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        private MessageItem CreateMessageItemForPublishing(CoreItem coreItem, out Participant[] participantsOnOriginalMessage, IWorkingSetPublisherPerformanceTracker performanceTracker)
        {
            MailboxSession mailboxSession = coreItem.Session as MailboxSession;
            StoreObjectId  storeObjectId  = mailboxSession.GetDefaultFolderId(DefaultFolderType.TemporarySaves);

            if (storeObjectId == null)
            {
                storeObjectId = mailboxSession.CreateDefaultFolder(DefaultFolderType.TemporarySaves);
            }
            MessageItem messageItem = MessageItem.Create(mailboxSession, storeObjectId);

            CoreItem.CopyItemContent(coreItem, messageItem.CoreItem);
            participantsOnOriginalMessage = new Participant[messageItem.Recipients.Count];
            int num = 0;

            foreach (Recipient recipient in messageItem.Recipients)
            {
                participantsOnOriginalMessage[num] = recipient.Participant;
                num++;
            }
            Participant participant = new Participant(mailboxSession.MailboxOwner);
            Stopwatch   stopwatch   = new Stopwatch();

            stopwatch.Start();
            if (!participant.ExistIn(participantsOnOriginalMessage))
            {
                messageItem.Recipients.Add(participant, RecipientItemType.To);
                performanceTracker.IsGroupParticipantAddedToParticipants = true;
            }
            stopwatch.Stop();
            performanceTracker.EnsureGroupParticipantAddedMilliseconds = stopwatch.ElapsedMilliseconds;
            stopwatch.Reset();
            messageItem.Save(SaveMode.NoConflictResolutionForceSave);
            messageItem.Load();
            return(messageItem);
        }
 private void ComposeAndDeliverMessage(MailboxSession session, StoreObjectId draftsFolderId, IMailboxLocator recipient, IMailboxAssociationPerformanceTracker performanceTracker, IExtensibleLogger logger)
 {
     EmailNotificationHandler.Tracer.TraceDebug <IMailboxLocator, string>((long)this.GetHashCode(), "EmailNotificationHandler.ComposeAndDeliverMessage: Processing recipient {0}. Group {1}.", recipient, this.groupMailbox.ExternalDirectoryObjectId);
     using (MessageItem messageItem = MessageItem.Create(session, draftsFolderId))
     {
         ADUser           recipient2      = recipient.FindAdUser();
         IMessageComposer messageComposer = this.messageComposerBuilder.Build(recipient2);
         messageComposer.WriteToMessage(messageItem);
         bool flag = false;
         if (this.groupMailbox.WhenCreatedUTC != null)
         {
             TimeSpan timeSpan = DateTime.UtcNow - this.groupMailbox.WhenCreatedUTC.Value;
             if (timeSpan < EmailNotificationHandler.DelaySendTime)
             {
                 messageItem[MessageItemSchema.DeferredSendTime] = DateTime.UtcNow + EmailNotificationHandler.DelaySendTime - timeSpan;
                 flag = true;
             }
         }
         else
         {
             messageItem[MessageItemSchema.DeferredSendTime] = DateTime.UtcNow + EmailNotificationHandler.DelaySendTime;
             flag = true;
         }
         if (flag)
         {
             logger.LogEvent(new SchemaBasedLogEvent <MailboxAssociationLogSchema.Warning>
             {
                 {
                     MailboxAssociationLogSchema.Warning.Context,
                     "EmailNotificationHandler"
                 },
                 {
                     MailboxAssociationLogSchema.Warning.Message,
                     string.Format("Welcome email for recipient {0}, Group {1} is delayed to send", recipient, this.groupMailbox.ExternalDirectoryObjectId)
                 }
             });
             EmailNotificationHandler.Tracer.TraceDebug <IMailboxLocator, string>((long)this.GetHashCode(), "EmailNotificationHandler.ComposeAndDeliverMessage: Welcome email for recipient {0}, Group {1} is delayed to send.", recipient, this.groupMailbox.ExternalDirectoryObjectId);
         }
         StoreObjectId saveSentMessageFolder = session.GetDefaultFolderId(DefaultFolderType.TemporarySaves) ?? session.CreateDefaultFolder(DefaultFolderType.TemporarySaves);
         messageItem.Send(saveSentMessageFolder, SubmitMessageFlags.IgnoreSendAsRight);
         performanceTracker.IncrementAssociationsUpdated();
     }
 }