Outlook API GetItemFromID()失败,错误“无法打开该项目。请再次尝试”。使用多个Outlook帐户时

时间:2016-01-08 09:43:24

标签: c# com outlook outlook-addin com-interop

我使用来自同一个Exchange服务器的两个Outlook帐户(即同一个域)。我们有一个outlook插件,我们用它来存档从outlook到外部Web应用程序的一些电子邮件。在编写新邮件时,可以将外部应用程序中的某些文件附加到使用加载项组成的邮件中。 当我在outlook上有一个帐户时,事情就完美了。但在配置另一个帐户并尝试从辅助帐户执行相同操作后,Outlook会出错:

  

Outlook Initiator异常:   System.Runtime.InteropServices.COMException(0x80040107):无法   打开该项目。再试一次。在   Microsoft.Office.Interop.Outlook.NameSpaceClass.GetItemFromID(字符串   EntryIDItem,Object EntryIDStore)

我试图深入研究代码,发现对GetItemFromID()的调用给出了上面显示的异常。

object item = ns.GetItemFromID(objectID, storeId);

第一个参数objectID(即EntryIDItem)对于不同的帐户是不同的,但第二个参数storeId是相同的。

我还尝试使用反汇编程序查看方法GetItemFromID()的主体,但该方法被定义为extern方法,这意味着它在当前程序集之外定义为非托管代码。

尝试搜索类似于stackoverflow上的任何内容,但没有运气。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

尝试只留下第一个参数。 EntryIDStore参数是可选的。有关详细信息,请参阅NameSpace.GetItemFromID

注意,当项目移动到另一个商店时(例如,从收件箱到Microsoft Exchange Server公用文件夹,或从一个个人文件夹(.pst)文件移动到另一个.pst文件时,条目ID会更改。解决方案不应该依赖于EntryID属性是唯一的,除非不移动项目。