2016-01-08 115 views
0

我使用来自同一个Exchange服务器(即同一个域)的两个Outlook帐户。我们有一个outlook插件,我们用它来将一些电子邮件从outlook存档到外部web应用程序。在编写新邮件时,可以将外部应用程序的某些文件附加到使用加载项组成的邮件。 现在事情工作完美时,我有一个单一的帐户在Outlook中。但是,配置另一个帐户,并试图从附属帐户的做同样的后,后市给出了错误:Outlook API GetItemFromID()失败,并显示错误“无法打开该项目。再试一次。”当使用多个Outlook帐户

Outlook Initiator exception: System.Runtime.InteropServices.COMException (0x80040107): Could not open the item. Try again. at Microsoft.Office.Interop.Outlook.NameSpaceClass.GetItemFromID(String EntryIDItem, Object EntryIDStore)

我试图深入到代码,发现调用GetItemFromID()给出了上述的异常。

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

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

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

试图寻找类似于在stackoverflow但没有运气的东西。任何人都可以帮助我吗?

回答

0

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

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

+0

离开第二个可选参数完成了这项工作。在尤金后期看到你的回应。很高兴看到专家提出的相同修复,非常感谢! –

相关问题