Outlook VSTO加载项更改发送的项目属性被Exchange同步覆盖

问题描述 投票:0回答:1

我有一个VSTO Outlook加载项,它侦听“已发送邮件”文件夹并为用户提供一些选项,以便(1)将已发送邮件的副本保存到某个位置(例如,保存到文件系统),以及(2)应用一些属性在Outlook中的属性(例如,将后续标志设置为完成,向主题添加文本)。

这里是代码-请注意,传递给此子对象的对象是包含元数据的自定义对象,特别是ItemToSave是包含项的GUID的结构,不是本身是对Outlook对象的引用模型对象。

Public Sub CleanUpThisEmail(ByRef item As ItemToSave,
                            ByRef postSaveOptions As PostSaveOptions)

    If item.SaveSuccess = True Then
        Try
            Dim oItem As Outlook.MailItem = Globals.ThisAddIn.Application.GetNamespace("MAPI").GetItemFromID(item.GUID)

            ' Stuff to do to the item in Outlook
            With oItem
                If postSaveOptions.FlagCompleted = True Then .FlagStatus = Outlook.OlFlagStatus.olFlagComplete
                If postSaveOptions.AppendToSubject = True Then .Subject = String.Format("{0} {1}", .Subject, DateTimeStringHelper.ParseTextWithDatesAndTimes(postSaveOptions.SubjectAppendOption, DateTime.Now()))
                .Save()
            End With

            item.CleanupSuccess = True
        Catch ex As Exception
            ThisAddIn.log.ErrorFormat("CleanUpThisEmail: Error while applying options and/or deleting email in Outlook: {0}", ex.Message)
            ThisAddIn.log.Error(ex.StackTrace)
            item.CleanupSuccess = False
        End Try

        ThisAddIn.log.InfoFormat("CleanUpThisEmail: Finished processing")
    Else
        ThisAddIn.log.WarnFormat("CleanupThisEmail: Skipping processing of an email that failed to save correctly.")
    End If

End Sub

[一些用户已经报告说,正在应用Outlook中对该项目的更改,但是随后与Exchange同步该项目显然会覆盖所做的更改。这些用户中的一些用户看到诸如“您已对此项目的副本进行了更改...”之类的消息,而我的加载项所做的预期更改位于该项目的先前“版本”中。

看来,如果用户稍等片刻,然后然后在我的加载项中应用这些选项,则它们将是最新版本,并且不会被与Exchange的同步所覆盖。大概此时已与Exchange同步。是否可以确保以某种方式应用对Outlook中的项目所做的更改,以使Exchange同步将其识别为最新版本?似乎我可能需要在后台线程或其他内容上添加等待时间,但这似乎很脆弱且不够优雅。

我有一个VSTO Outlook加载项,它侦听“已发送邮件”文件夹并为用户提供一些选项,以便(1)将已发送邮件的副本保存到某个位置(例如,保存到文件系统),以及(2)应用一些...

outlook office365 vsto exchange-server
1个回答
0
投票
其中一些用户看到诸如“您已对此项目的副本进行了更改...”的消息,
© www.soinside.com 2019 - 2024. All rights reserved.