从Outlook VSTO加载项展开exchange联机公用文件夹



我有一个简单的VSTO outlook插件,需要将电子邮件移动到公用文件夹中。它运行良好,除非outlook首次启动。在outlook(office 365业务(的第一次启动之后,如果我尝试使用addin使用GetFolderFromID(IDValueStoredInMyAdin(将消息移动到公用文件夹中,我会得到一个错误";操作失败。消息传递接口返回了一个未知错误。如果问题仍然存在,请重新启动Outlook";。如果启动outlook后,用户手动展开公用文件夹树,则加载项可以正常工作而不会出现此错误。你知道这里发生了什么吗?有没有一种方法可以从VSTO加载项中展开公用文件夹?

Outlook在首次访问时初始化存储。尝试指定商店条目id(调用GetFolderFromID时的第二个参数(,或者先使用Namespacve.GetStorefromID然后使用Store.GetFolderFromID打开商店

我刚刚遇到了同样的问题,看起来它正在处理这个问题:

public string GetStoreID()
{
if (Properties.Settings.Default.SharedFolderEmail != "")
{
Outlook._NameSpace nSpace = Application.GetNamespace("MAPI");
Outlook.Recipient recip = nSpace.CreateRecipient(Properties.Settings.Default.SharedFolderEmail);
if (recip.Resolve())
{
Outlook.Folder root = nSpace.GetSharedDefaultFolder(recip, Outlook.OlDefaultFolders.olFolderInbox) as Outlook.Folder;
return root.StoreID;
}
else
{
return "";
}
}
else
{
Outlook.Folder root = Application.Session.DefaultStore.GetRootFolder() as Outlook.Folder;
return root.StoreID;
}
}

Outlook._NameSpace nSpace = Application.GetNamespace("MAPI");
_Archive = nSpace.GetFolderFromID(FolderToMonitor_EntryID, GetStoreID());
_Archive.Items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(ItemAdded);
GC.KeepAlive(_Archive);

最新更新