兑换:尝试获取服务器的消息ID

时间:2018-06-23 10:50:43

标签: .net vsto outlook-addin outlook-redemption

this thread开始,在链接答案中使用建议的方法获取 first 在RDOMail对象上调用SaveAs时遇到失败服务器的Message-ID标头。我想获取服务器的message-id,因为它是用于我的目的的规范ID(和主键)。

第一次尝试使用方法1024 SaveAs在IMessage.GetAttachmentTable中给我一个错误:MAPI_E_NOT_FOUND ,但是如果我重新尝试保存(即,运行保存中的所有代码)方法),则保存成功,并且可以看到它已成功检索到服务器的消息ID。

我尝试将1030和1031用于SaveAs,它们的行为相同(第一次失败,然后成功),而1030返回的错误略有不同: IConverterSession.MAPIToMIMEStm:MAPI_E_NOT_FOUND (1031返回相同错误为1024)。

我在ThisAddin中有一个用于兑换会话的全局字段:

Public Shared rSession As Object

然后我使用RedemptionLoader在ThisAddin.Startup中分配它:

rSession = Redemption.RedemptionLoader.new_RDOSession
rSession.MAPIOBJECT = Globals.ThisAddIn.Application.Session.MAPIOBJECT

然后在我的班级中管理电子邮件的保存,我使用如下所示的建议方法:

Dim rdoMailItem As Object
Dim MAPI_NO_CACHE = &H209
Dim MAPI_BEST_ACCESS = &H10
Try
    rdoMailItem = ThisAddIn.rSession.GetMessageFromID(someEntryId, , MAPI_BEST_ACCESS + MAPI_NO_CACHE)
    Dim dummyString = rdoMailItem.Fields("http://schemas.microsoft.com/mapi/proptag/0x1035001F")
    rdoMailItem.SaveAs(someFilePath, 1024)
Catch ex as Exception
    Debug.Print(ex.Message)
End Try

如果我省略了GetMessageFromID方法中的其他参数,并且不尝试使用.Fields(...)获取该属性,那么我不会得到错误,并且SaveAs会在第一次工作(但是,当然,这不会给我服务器的消息ID)。因此,这种现象似乎是由特殊选项和字段检索引起的。

这使用的是赎回版本5.15.0.4892;我方便的5.11.0.4476的行为相同。 Outlook 2010,已连接到Office365交换帐户。

0 个答案:

没有答案