Exemple #1
0
        internal static CalendarMethod GetICalMethod(Item item)
        {
            CalendarMethod result    = CalendarMethod.None;
            string         className = item.ClassName;

            if (ObjectClass.IsMeetingRequest(className))
            {
                result = CalendarMethod.Request;
            }
            else if (ObjectClass.IsMeetingCancellation(className))
            {
                result = CalendarMethod.Cancel;
            }
            else if (ObjectClass.IsMeetingResponse(className))
            {
                if (item.GetValueOrDefault <bool>(InternalSchema.AppointmentCounterProposal))
                {
                    result = CalendarMethod.Counter;
                }
                else
                {
                    result = CalendarMethod.Reply;
                }
            }
            else if (ObjectClass.IsCalendarItemCalendarItemOccurrenceOrRecurrenceException(className))
            {
                result = CalendarMethod.Publish;
            }
            return(result);
        }
Exemple #2
0
        public static MessageItem CreateForward(MessageItem originalItem, bool asAttachment, CultureInfo culture, string imceaDomain, string xLoop, ExTimeZone timeZone, IRuleEvaluationContext context)
        {
            Util.ThrowOnNullArgument(originalItem, "originalItem");
            Util.ThrowOnNullArgument(culture, "culture");
            Util.ThrowOnNullOrEmptyArgument(imceaDomain, "imceaDomain");
            ExTraceGlobals.StorageTracer.Information(0L, "RuleMessageUtils::CreateForward.");
            MessageItem messageItem = null;
            bool        flag        = false;
            MessageItem result;

            try
            {
                ForwardCreationFlags forwardCreationFlags = ForwardCreationFlags.None;
                string className = originalItem.ClassName;
                if (ObjectClass.IsMeetingMessage(className))
                {
                    forwardCreationFlags |= ForwardCreationFlags.TreatAsMeetingMessage;
                }
                messageItem = context.CreateMessageItem(InternalSchema.ContentConversionProperties);
                messageItem[InternalSchema.ItemClass] = "IPM.Note";
                StoreSession storeSession = context.StoreSession ?? originalItem.Session;
                if (asAttachment)
                {
                    ForwardAsAttachmentCreation forwardAsAttachmentCreation = new ForwardAsAttachmentCreation(originalItem, messageItem, new ReplyForwardConfiguration(forwardCreationFlags, culture)
                    {
                        XLoop    = xLoop,
                        TimeZone = timeZone,
                        ConversionOptionsForSmime = new InboundConversionOptions(storeSession.GetADRecipientSession(true, ConsistencyMode.IgnoreInvalid), imceaDomain)
                    });
                    forwardAsAttachmentCreation.PopulateProperties();
                }
                else
                {
                    bool flag2        = ObjectClass.IsMeetingCancellation(className);
                    bool flag3        = ObjectClass.IsMeetingRequest(className);
                    bool isRestricted = originalItem.IsRestricted;
                    if (flag2)
                    {
                        messageItem[InternalSchema.ItemClass] = "IPM.Schedule.Meeting.Canceled";
                        messageItem[InternalSchema.IconIndex] = IconIndex.AppointmentMeetCancel;
                    }
                    else if (flag3)
                    {
                        messageItem[InternalSchema.ItemClass]           = "IPM.Schedule.Meeting.Request";
                        messageItem[InternalSchema.IsResponseRequested] = true;
                        messageItem[InternalSchema.IsReplyRequested]    = true;
                    }
                    else if (isRestricted)
                    {
                        messageItem[StoreObjectSchema.ContentClass] = "rpmsg.message";
                        messageItem.IconIndex = IconIndex.MailIrm;
                    }
                    BodyFormat format = originalItem.Body.Format;
                    ReplyForwardConfiguration replyForwardConfiguration = new ReplyForwardConfiguration(format, forwardCreationFlags, culture);
                    replyForwardConfiguration.XLoop    = xLoop;
                    replyForwardConfiguration.TimeZone = timeZone;
                    replyForwardConfiguration.ConversionOptionsForSmime = new InboundConversionOptions(storeSession.GetADRecipientSession(true, ConsistencyMode.IgnoreInvalid), imceaDomain);
                    RuleMessageUtils.GenerateHeader(replyForwardConfiguration, originalItem);
                    ForwardCreation forwardCreation = new ForwardCreation(originalItem, messageItem, replyForwardConfiguration);
                    forwardCreation.PopulateProperties();
                    if (flag2 || flag3)
                    {
                        AppointmentStateFlags appointmentStateFlags = messageItem.GetValueOrDefault <AppointmentStateFlags>(InternalSchema.AppointmentState);
                        appointmentStateFlags |= (AppointmentStateFlags.Meeting | AppointmentStateFlags.Received);
                        messageItem[InternalSchema.AppointmentState] = appointmentStateFlags;
                        int num = messageItem.GetValueOrDefault <int>(InternalSchema.AppointmentAuxiliaryFlags, 0);
                        num |= 4;
                        messageItem[InternalSchema.AppointmentAuxiliaryFlags] = num;
                        if (flag3)
                        {
                            List <BlobRecipient> list = BlobRecipientParser.ReadRecipients(originalItem, InternalSchema.UnsendableRecipients);
                            list = MeetingRequest.FilterBlobRecipientList(list);
                            list = MeetingRequest.MergeRecipientLists(originalItem.Recipients, list);
                            list = MeetingRequest.FilterBlobRecipientList(list);
                            BlobRecipientParser.WriteRecipients(messageItem, InternalSchema.UnsendableRecipients, list);
                        }
                    }
                }
                flag   = true;
                result = messageItem;
            }
            finally
            {
                if (!flag && messageItem != null)
                {
                    messageItem.Dispose();
                    messageItem = null;
                }
            }
            return(result);
        }
Exemple #3
0
 public static StoreObjectType GetObjectType(string itemClass)
 {
     if (ObjectClass.IsOfClass(itemClass, "IPM.Note.Rules.OofTemplate.Microsoft", false))
     {
         return(StoreObjectType.OofMessage);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Note.Rules.ExternalOofTemplate.Microsoft", false))
     {
         return(StoreObjectType.ExternalOofMessage);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Note.Reminder"))
     {
         return(StoreObjectType.ReminderMessage);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Note"))
     {
         return(StoreObjectType.Message);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Post"))
     {
         return(StoreObjectType.Post);
     }
     if (ObjectClass.IsReport(itemClass))
     {
         return(StoreObjectType.Report);
     }
     if (ObjectClass.IsCalendarItem(itemClass))
     {
         return(StoreObjectType.CalendarItem);
     }
     if (ObjectClass.IsCalendarItemSeries(itemClass))
     {
         return(StoreObjectType.CalendarItemSeries);
     }
     if (ObjectClass.IsMeetingRequestSeries(itemClass))
     {
         return(StoreObjectType.MeetingRequestSeries);
     }
     if (ObjectClass.IsMeetingRequest(itemClass))
     {
         return(StoreObjectType.MeetingRequest);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.MeetingMessageSeries.Resp"))
     {
         return(StoreObjectType.MeetingResponseSeries);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Schedule.Meeting.Resp"))
     {
         return(StoreObjectType.MeetingResponse);
     }
     if (ObjectClass.IsMeetingCancellationSeries(itemClass))
     {
         return(StoreObjectType.MeetingCancellationSeries);
     }
     if (ObjectClass.IsMeetingCancellation(itemClass))
     {
         return(StoreObjectType.MeetingCancellation);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Schedule.Meeting.Notification.Forward"))
     {
         return(StoreObjectType.MeetingForwardNotification);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.MeetingMessageSeries.Notification.Forward"))
     {
         return(StoreObjectType.MeetingForwardNotificationSeries);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Notification.Meeting"))
     {
         return(StoreObjectType.MeetingForwardNotification);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Schedule.Inquiry"))
     {
         return(StoreObjectType.MeetingInquiryMessage);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Contact.Place"))
     {
         return(StoreObjectType.Place);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Contact"))
     {
         return(StoreObjectType.Contact);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.UserPhoto.Preview"))
     {
         return(StoreObjectType.UserPhotoPreview);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.UserPhoto"))
     {
         return(StoreObjectType.UserPhoto);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.DistList"))
     {
         return(StoreObjectType.DistributionList);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Task"))
     {
         return(StoreObjectType.Task);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.TaskRequest"))
     {
         return(StoreObjectType.TaskRequest);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.ConversationAction"))
     {
         return(StoreObjectType.ConversationActionItem);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Note.rpmsg.Microsoft.Voicemail.UM.CA"))
     {
         return(StoreObjectType.Message);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Note.rpmsg.Microsoft.Voicemail.UM"))
     {
         return(StoreObjectType.Message);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.Sharing", false))
     {
         return(StoreObjectType.SharingMessage);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.GroupMailbox.JoinRequest"))
     {
         return(StoreObjectType.GroupMailboxRequestMessage);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.MailboxAssociation.Group"))
     {
         return(StoreObjectType.MailboxAssociationGroup);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.MailboxAssociation.User"))
     {
         return(StoreObjectType.MailboxAssociationUser);
     }
     if (ObjectClass.IsOfClass(itemClass, "IPM.HierarchySync.Metadata"))
     {
         return(StoreObjectType.HierarchySyncMetadata);
     }
     if (ObjectClass.IsSubscriptionDataItem(itemClass))
     {
         return(StoreObjectType.PushNotificationSubscription);
     }
     if (ObjectClass.IsOutlookServiceSubscriptionDataItem(itemClass))
     {
         return(StoreObjectType.OutlookServiceSubscription);
     }
     if (ObjectClass.IsConfigurationItem(itemClass))
     {
         return(StoreObjectType.Configuration);
     }
     if (ObjectClass.IsParkedMeetingMessage(itemClass))
     {
         return(StoreObjectType.ParkedMeetingMessage);
     }
     if (ObjectClass.IsGenericMessage(itemClass))
     {
         return(StoreObjectType.Message);
     }
     if (ObjectClass.IsCalendarFolder(itemClass))
     {
         return(StoreObjectType.CalendarFolder);
     }
     if (ObjectClass.IsContactsFolder(itemClass))
     {
         return(StoreObjectType.ContactsFolder);
     }
     if (ObjectClass.IsTaskFolder(itemClass))
     {
         return(StoreObjectType.TasksFolder);
     }
     if (ObjectClass.IsNotesFolder(itemClass))
     {
         return(StoreObjectType.NotesFolder);
     }
     if (ObjectClass.IsJournalFolder(itemClass))
     {
         return(StoreObjectType.JournalFolder);
     }
     if (ObjectClass.IsShortcutFolder(itemClass))
     {
         return(StoreObjectType.ShortcutFolder);
     }
     if (ObjectClass.IsGenericFolder(itemClass))
     {
         return(StoreObjectType.Folder);
     }
     return(StoreObjectType.Unknown);
 }