我使用来自同一个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上的任何内容,但没有运气。有人可以帮帮我吗?
答案 0 :(得分:0)
尝试只留下第一个参数。 EntryIDStore
参数是可选的。有关详细信息,请参阅NameSpace.GetItemFromID。
注意,当项目移动到另一个商店时(例如,从收件箱到Microsoft Exchange Server公用文件夹,或从一个个人文件夹(.pst)文件移动到另一个.pst文件时,条目ID会更改。解决方案不应该依赖于EntryID属性是唯一的,除非不移动项目。