繁体   English   中英

从 Outlook VSTO 插件扩展交换在线公用文件夹

[英]Expand exchange online public folders from Outlook VSTO addin

我有一个简单的 VSTO outlook 插件,需要将 email 消息移动到公共文件夹中。 它工作正常,除非 outlook 首次启动。 在首次启动 outlook(office 365 业务)后,如果我尝试使用插件将消息移动到公用文件夹中,使用 GetFolderFromID(IDValueStoredInMyAddin) 我收到错误“操作失败。消息传递接口返回了一个未知错误。如果问题仍然存在,重新启动 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM