C# 如何获取加载到当前配置文件中的代理邮箱的收件箱

C# 如何获取加载到当前配置文件中的代理邮箱的收件箱,c#,.net,outlook,vsto,C#,.net,Outlook,Vsto,我有一个C#VSTO Outlook插件,我正在尝试支持Outlook 2007及更高版本,我需要将帐户名作为当前配置文件中所有商店的收件人。显然,其中一个存储区将是当前用户的邮箱,但也可能在当前配置文件中打开了代理邮箱,我无法找到使用Outlook对象模型获取这些代理邮箱存储区所有者的方法 可能是属性访问器?您可以使用该属性在Outlook配置文件中循环访问各个存储,并检查每个存储的属性值,以查看是否是您感兴趣的存储类型 我的Outlook配置文件中没有代理邮箱,因此我无法100%说明如何获取

我有一个C#VSTO Outlook插件,我正在尝试支持Outlook 2007及更高版本,我需要将帐户名作为当前配置文件中所有商店的收件人。显然,其中一个存储区将是当前用户的邮箱,但也可能在当前配置文件中打开了代理邮箱,我无法找到使用Outlook对象模型获取这些代理邮箱存储区所有者的方法


可能是属性访问器?

您可以使用该属性在Outlook配置文件中循环访问各个存储,并检查每个存储的属性值,以查看是否是您感兴趣的存储类型

我的Outlook配置文件中没有代理邮箱,因此我无法100%说明如何获取所有者。但希望您能够在对象上找到一个属性,该属性为您提供所需的信息。e、 g.财产

下面是一个在Outlook配置文件中循环存储并检查其类型的示例

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

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

问题是存储对象的有用属性不多。GetDefaultFolder仅在Outlook 2010 PIA和UPA上可用。您可以在VSTO Outlook项目中使用Outlook Redemption()。RDOStore对象()具有GetDefaultFolder方法,并支持Outlook 98、2000、2002、2003、2007、2010和2013。@m_collard,你是对的,你可以用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);
    }
}