我有一个C#VSTO Outlook插件,我正在尝试支持Outlook 2007及以上版本,我需要将帐户名称作为当前配置文件中所有商店的收件人。显然,其中一个商店将是当前用户的邮箱,但也可能在当前配置文件中打开了委托邮箱,我找不到使用Outlook对象模型获取这些委托邮箱存储的所有者的方法。
也许是属性访问者?
答案 0 :(得分:1)
您可以使用Stores属性在Outlook配置文件中循环存储,并检查每个ExchangeStoreType的Store属性值,看看它是否是您感兴趣的商店类型英寸
我的Outlook个人资料中没有委托邮箱,所以我不能说100%如何获得所有者。但希望您能够在Store对象上找到一个属性,为您提供所需的信息。例如DisplayName属性。
以下示例循环浏览Outlook配置文件中的商店,并检查它是什么类型的Exchange商店。
Stores stores = Application.GetNamespace("MAPI").Stores;
for (int i = 1; i <= stores.Count; i++)
{
Store store = stores[i];
switch (store.ExchangeStoreType)
{
case OlExchangeStoreType.olAdditionalExchangeMailbox:
break;
case OlExchangeStoreType.olExchangeMailbox:
break;
case OlExchangeStoreType.olExchangePublicFolder:
break;
case OlExchangeStoreType.olNotExchange:
break;
case OlExchangeStoreType.olPrimaryExchangeMailbox:
break;
}
Marshal.ReleaseComObject(store);
}
Marshal.ReleaseComObject(stores);
如果您想获取收件箱文件夹,可以使用GetDefaultFolder方法。
MAPIFolder inboxFolder = store.GetDefaultFolder(OlDefaultFolders.olFolderInbox);
答案 1 :(得分:0)
我刚刚使用委托帐户的DisplayName完成了此操作:
var app = new OutlookApp();
Stores stores = app.GetNamespace("MAPI").Stores;
MAPIFolder sentFolder = null;
foreach (Store store in stores)
{
if (store.DisplayName == "DisplayName for your delegate account")
{
sentFolder = store.GetDefaultFolder(OlDefaultFolders.olFolderSentMail);
}
}
显示名称是Outlook工具栏中显示的代理帐户的名称。