如何获取加载到当前配置文件中的委托邮箱的收件箱

本文关键字:配置文件 收件箱 何获取 获取 加载 | 更新日期: 2023-09-27 18:04:26

我有一个c# VSTO Outlook插件,我正在尝试支持Outlook 2007及以上版本,我需要将帐户名称作为当前配置文件中所有商店的收件人。显然,其中一个store将是当前用户的邮箱,但也可能在当前配置文件中打开委托邮箱,我找不到使用Outlook对象模型获得这些委托邮箱store的所有者的方法。

可能是一个属性访问器?

如何获取加载到当前配置文件中的委托邮箱的收件箱

您可以使用stores属性遍历Outlook配置文件中的商店,并检查每个商店的ExchangeStoreType属性值,以查看它是否是您感兴趣的商店类型。

我的Outlook配置文件中没有委托邮箱,所以我不能100%地说如何获得所有者。但希望您能够在Store对象上找到一个属性,为您提供所需的信息。例如DisplayName属性

下面是一个示例,循环Outlook配置文件中的Store,并检查它是什么类型的Exchange Store。

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);

我刚刚使用代理帐户的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工具栏中显示的委托帐户的名称。