Outlook 兑换 AddPSTStore 错误 MAPI_E_INTERFACE_NOT_SUPPORTED

问题描述 投票:0回答:1

我正在使用 Outlook

Nicknames
使用 C# .NET Framework 控制台应用程序的 Redemption。当我尝试添加 PST 存储时:

RDOPstStore pstStore = rdoSession.Stores.AddPSTStore(@"c:\Support\nicknames.pst", 1, "Test Store");

我收到错误:

IMsgServiceAdmin::AdminProviders 中出现错误: MAPI_E_INTERFACE_NOT_SUPPORTED

相关代码如下:

using System;
using Outlook = Microsoft.Office.Interop.Outlook;
using Redemption;

RDOSession rdoSession = new RDOSession();
rdoSession.MAPIOBJECT = new Outlook.Application().Session.MAPIOBJECT;

RDOStore defaultStore = rdoSession.Stores.DefaultStore;
RDOPstStore pstStore = rdoSession.Stores.AddPSTStore(@"c:\Support\nicknames.pst", 1, "Test Store");

RDONicknames defaultNicknames = rdoSession.GetNicknames();
RDONicknames pstNicknames = pstStore.GetNicknames();
pstNicknames.Clear();

foreach (RDONickName nickname in defaultNicknames)
{
    pstNicknames.Add(nickname.GetAddressEntry());
}

pstNicknames.Save();

foreach (RDONickName nickname in pstNicknames)
{
    Console.WriteLine(nickname.Name + "_" + nickname.SMTPAddress);
}
Console.ReadLine();

我尝试了“尝试添加PstStore灾难性失败”解决方案,但这并不适用于我的情况。

欢迎所有建议和帮助。

c# outlook office-interop outlook-redemption
1个回答
0
投票
您最终会使用 Outlook.exe 进程中的

IMAPISession

,并且 MAPI 无法处理跨进程边界的封送处理 
IMsgServiceAdmin
 接口。

你可以

    在同一进程中创建 MAPI 会话 - 不要设置
  1. rdoSession.MAPIOBJECT
     属性,而是调用 
    rdoSession.Logon
    :
rdoSession.Logon(new Outlook.Application().Session.CurrentProfileName);
您还可以调用不带参数的

Logon

来登录默认配置文件。

    在outlook.exe进程空间内创建
  1. rdoSession
    。这有一个额外的好处,可以让您的进程的位数与 Outlook 的不同:
var app = new Outlook.Application(); RDOSession rdoSession = app.CreateObject("Outlook.Application"); rdoSession.MAPIOBJECT = app.Session.MAPIOBJECT;
    
© www.soinside.com 2019 - 2024. All rights reserved.