Невозможно получить доступ к другим папкам учетной записи получателя с помощью C # Interop.Outlook. - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь получить доступ к своей папке со спамом в другой учетной записи в моем Outlook. В моей учетной записи Outlook у меня установлено 3 учетных записи электронной почты, где 2 связаны с работой, а 1 - с личной.

Мне удалось получить доступ к электронной почте в моей основной учетной записи, используя следующий код:

ns = Application.GetNamespace("MAPI");
inbox = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
items = inbox.Items;

Это работает отлично.
Однако, когда я пытаюсь получить доступ к другой учетной записи, я получаю следующую ошибку:

System.Runtime.InteropServices.COMException: «Операция не выполнена из-за проблемы с реестром или установкой. Перезапустите Outlook и попробуйте снова. Если проблема не устраняется, переустановите. '

в Microsoft.Office.Interop.Outlook.NameSpaceClass.GetSharedDefaultFolder (Получатель получателя, OlDefaultFolders FolderType)
в DemoAntiSpam2.ThisAddIn.ThisAddIn_Startup (Отправитель объекта, EventArgs e) в C: \ Projects \ T \ DemoAntiSpam2 \ DemoAntiSpam2 \ ThisAddIn.cs: строка 29
в Microsoft.Office.Tools.AddInImpl.OnStartup ()
в DemoAntiSpam2.ThisAddIn.FinishInitialization () в C: \ Projects \ T \ DemoAntiSpam2 \ DemoAntiSpam2 \ ThisAddIn.Designer.cs: строка 57
в Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.ExecutePhase (ExecutionPhases executePhases) в Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustomization.Microsoft.VisualStudio.Tools.Office.Runtime.Interop.IExecuteCustomization2.ExecuteEntryPoints ()

Outlook.NameSpace ns;
Outlook.MAPIFolder inbox;
Outlook.Items items;

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    ns = Application.GetNamespace("MAPI");
    var recipient = ns.CreateRecipient(recipientAddress);
    recipient.Resolve();
    if (recipient.Resolved)
    {
        // Code breaks here.
        inbox = ns.GetSharedDefaultFolder(recipient, Outlook.OlDefaultFolders.olFolderInbox);
        items = inbox.Items;
        items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(items_ItemAdd);
    }
}

1 Ответ

0 голосов
/ 15 апреля 2019

Мне удалось решить проблему следующим образом:

https://www.codeproject.com

Вместо доступа к папкам с помощью GetSharedDefaultFolder() я посмотрел индекс папок пространства имен:

Outlook.NameSpace ns = Application.GetNamespace("Mapi");
Outlook.MAPIFolder folder = ns.Folders[recipient].Folders["Ongewenste e-mail"];

Имя папки - это прямое имя, которое вы используете в своем внешнем виде. Вы также можете использовать EntryId, который является уникальным идентификатором для объекта.

...