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); }
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); }
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); }