经过一小时的搜索,在这里试试运气。
假设您的 Outlook 2010 有两个活动帐户:john.doe@company.com、admin.test@company.com。
您需要为 admin.test@company.com 提取全局地址列表:
using Microsoft.Office.Interop.Outlook;
Application app = new Application();
NameSpace ns = app.GetNamespace("MAPI");
ns.Logon("", "", false, true);
AddressList GAL = ns.AddressLists["Global Address List"];
foreach (AddressEntry oEntry in GAL.AddressEntries)
{
// do something
}
这里的问题是 GAL 可以属于任何一个帐户,并且至少通过阅读 MSDN,这并不明显,您应该如何指定您真正想要使用的帐户。
如果我们将像这样遍历所有列表:
foreach (AddressList lst in ns.AddressLists)
{
Console.WriteLine("{0}, {1}", lst.Name, lst.Index);
}
我们可以看到有两个名为“Global Address List”的条目,两个名为“Contacts”的条目等索引不同,但仍然不清楚哪个条目属于哪个帐户。
对于文件夹,它做得很好,因为你可以使用这样的结构:
ns.Folders["admin.test@company.com"].Folders["Inbox"];
但我无法为地址列表找出类似的机制。
任何帮助表示赞赏。
谢谢你。