public void OnDemotedMessageHandler(StoreDriverEventSource source, StoreDriverSubmissionEventArgs args) { MailItem mailItem = args.MailItem; StoreDriverSubmissionEventArgsImpl storeDriverSubmissionEventArgsImpl = (StoreDriverSubmissionEventArgsImpl)args; MessageItem item = storeDriverSubmissionEventArgsImpl.SubmissionItem.Item; if (ApprovalInitiation.IsArbitrationMailbox((ADRecipientCache <TransportMiniRecipient>)mailItem.RecipientCache, mailItem.FromAddress)) { item.Load(ApprovalSubmitterAgent.ModeratedTransportProperties); ApprovalStatus?valueAsNullable = item.GetValueAsNullable <ApprovalStatus>(MessageItemSchema.ApprovalStatus); string valueOrDefault = item.GetValueOrDefault <string>(MessageItemSchema.ApprovalDecisionMaker, string.Empty); if (valueAsNullable != null && (valueAsNullable.Value & ApprovalStatus.Approved) == ApprovalStatus.Approved) { TransportMailItem transportMailItem = ((TransportMailItemWrapper)mailItem).TransportMailItem; ModeratedTransportHandling.ResubmitApprovedMessage(item, transportMailItem, valueOrDefault); return; } if (ObjectClass.IsOfClass(item.ClassName, "IPM.Microsoft.Approval.Initiation") || ObjectClass.IsOfClass(item.ClassName, "IPM.Note.Microsoft.Approval.Request.Recall")) { Header header = (TextHeader)Header.Create("X-MS-Exchange-Organization-Do-Not-Journal"); header.Value = "ArbitrationMailboxSubmission"; mailItem.MimeDocument.RootPart.Headers.AppendChild(header); Header newChild = new AsciiTextHeader("X-MS-Exchange-Organization-Approval-Initiator", "mapi"); mailItem.MimeDocument.RootPart.Headers.AppendChild(newChild); } } }
public void OnDemotedMessageHandler(StoreDriverEventSource source, StoreDriverSubmissionEventArgs args) { StoreDriverSubmissionEventArgsImpl storeDriverSubmissionEventArgsImpl = (StoreDriverSubmissionEventArgsImpl)args; if (MfnSubmitterAgent.ShouldGenerateMfn(storeDriverSubmissionEventArgsImpl.SubmissionItem.MessageClass)) { using (MfnSubmitter mfnSubmitter = new MfnSubmitter(storeDriverSubmissionEventArgsImpl.SubmissionItem, storeDriverSubmissionEventArgsImpl.MailItemSubmitter)) { TransportMailItem originalMailItem = null; TransportMailItemWrapper transportMailItemWrapper = args.MailItem as TransportMailItemWrapper; if (transportMailItemWrapper != null) { originalMailItem = transportMailItemWrapper.TransportMailItem; } mfnSubmitter.CheckAndSubmitMfn(originalMailItem); } } }
public void OnDemotedMessageHandler(StoreDriverEventSource source, StoreDriverSubmissionEventArgs args) { if (SubmissionConfiguration.Instance.App.EnableUnparkedMessageRestoring) { MailItem mailItem = args.MailItem; StoreDriverSubmissionEventArgsImpl storeDriverSubmissionEventArgsImpl = (StoreDriverSubmissionEventArgsImpl)args; MessageItem item = storeDriverSubmissionEventArgsImpl.SubmissionItem.Item; StoreSession session = storeDriverSubmissionEventArgsImpl.SubmissionItem.Session; if (ObjectClass.IsParkedMeetingMessage(storeDriverSubmissionEventArgsImpl.SubmissionItem.MessageClass)) { DateTime utcNow = DateTime.UtcNow; TransportMailItem transportMailItem = ((TransportMailItemWrapper)mailItem).TransportMailItem; ModerationHelper.RestoreOriginalMessage(item, transportMailItem, TraceHelper.ParkedItemSubmitterAgentTracer, TraceHelper.MessageProbeActivityId); transportMailItem.RootPart.Headers.RemoveAll("X-MS-Exchange-Organization-OriginalArrivalTime"); transportMailItem.RootPart.Headers.AppendChild(new AsciiTextHeader("X-MS-Exchange-Organization-OriginalArrivalTime", Util.FormatOrganizationalMessageArrivalTime(utcNow))); transportMailItem.ExtendedProperties.Clear(); transportMailItem.UpdateDirectionalityAndScopeHeaders(); transportMailItem.UpdateCachedHeaders(); } } }