コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
 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();
         }
     }
 }