是否在Outlook中获取Sharepoint应用商店URL?
我正在尝试编写一个Outlook2007VSTO加载项,它允许您使用Sharepoint Web服务执行一些操作。我真的很想让它对用户来说尽可能简单;理想情况下,他们所要做的就是。从那里,我的外接程序将理想地从列表中获取实际的Sharepoint URL并完成它的工作。不幸的是,在运行Outlook时,我似乎找不到Outlook存储这些信息的位置 我能找到的最好的解决方案是读入C:\Documents and Settings(username)\Local Settings\Application Data\Microsoft\Outlook*.sharing.xml.obi中的文件 但是,这些文件仅在您关闭Outlook时更新。这意味着用户必须连接到列表,重新启动Outlook,然后事情才能正常进行。我不希望事情发展到那种程度是否在Outlook中获取Sharepoint应用商店URL?,sharepoint,outlook,outlook-2007,Sharepoint,Outlook,Outlook 2007,我正在尝试编写一个Outlook2007VSTO加载项,它允许您使用Sharepoint Web服务执行一些操作。我真的很想让它对用户来说尽可能简单;理想情况下,他们所要做的就是。从那里,我的外接程序将理想地从列表中获取实际的Sharepoint URL并完成它的工作。不幸的是,在运行Outlook时,我似乎找不到Outlook存储这些信息的位置 我能找到的最好的解决方案是读入C:\Documents and Settings(username)\Local Settings\Applicati
这几乎就像这些信息在sharing.xml.obi文件中魔法般地出现一样。我用谷歌搜索过,用过OutlookSpy,在绝望中用过mfcmapi.exe,都没有用。Outlook在哪里存储此信息?您可以使用对象模型(或直接MAPI调用)从Outlook文件夹中查询此信息。首先使用.isSharePointFolder属性定位文件夹。然后,outlook中SharePoint列表的URL将作为“隐藏”消息的主题存储在关联的内容表中
额外提示:如果你还没有使用它,给自己买一份优秀的。这使得搞清楚这类事情变得容易多了 用Paul Jan的指针,我已经解决了这个问题。因为我讨厌在谷歌搜索时只找到间接的提示,下面就是您需要的代码:
private string getSharepointURL(Microsoft.Office.Interop.Outlook.Folder SharepointFolder)
{
if (!SharepointFolder.IsSharePointFolder)
throw new Exception("Cannot get the SharePoint URL of " + SharepointFolder.FullFolderPath + ", because it is not a SharePoint folder.");
return (string)((object[])SharepointFolder.GetTable("", 1).FindRow("[From] = SharePoint").GetValues())[1];
}
这可能是我写过的最丑陋的回报声明。它的作用如下:
幸运的是,您可以在OutlookSpy中自己完成所有这些步骤。这对了解如何获取这些宝贵信息非常有帮助。好吧,下面是我使用的。。。(C#3/VS2008,展望2007) 也请查看
快乐编码 哦,这就是它的名字。发布后大约一个小时,我在用mfcmapi.exe浏览时偶然发现了相关的内容表,但名称的描述性不足以让我正确地用谷歌搜索它,而使用PropertyAccessor.GetProperty()无法使用(它属于PT_OBJECT类型,.net不支持检索这些内容)现在我需要做的就是找出如何从C#add-in获取它。我[我]认为[/I]是一个文件夹。使用olHiddenItems参数获取表可能会让您访问相关的内容,但我唯一的经验是直接访问MAPI,所以我不能肯定。
Outlook.Folder folder = GetSomeSpFolder(); // requirement :)
// Things to look for here, not in the columns by default
// the values can be found in OutlookSpy or perhaps MSDN (haha)
// this value refers to the SP site (not the full URL)
var SHARING_REMOTE_STORE_UID = "http://schemas.microsoft.com/mapi/id/{00062040-0000-0000-C000-000000000046}/8A48001E";
var table = folder.GetTable("[From] = SharePoint", Outlook.OlTableContents.olHiddenItems);
// setup columns to look through
table.Columns.RemoveAll();
table.Columns.Add(SHARING_REMOTE_STORE_UID);
if (!table.EndOfTable) {
var row = table.GetNextRow();
var siteURL = row[SHARING_REMOTE_STORE_UID];
Marshal.ReleaseComObject(row);
} else {
// No matching entry ...
}
Marshal.ReleaseComObject(table);