Получить Входящие из Outlook - PullRequest
5 голосов
/ 27 июля 2011

Я настроил две учетные записи Exchange в Outlook 2010, однако не могу узнать, как попасть в папку «Входящие» второй учетной записи. Session.GetDefaultFolder() всегда возвращайте первый.

Даже перечисляя Session.Accounts, находя правильную учетную запись и вызывая Session.Account(found one).Store.GetDefaultFolder(), возвращает неправильный почтовый ящик (из учетной записи обмена по умолчанию, а не вторичной).

Ответы [ 5 ]

4 голосов
/ 06 сентября 2011

Показывает ли это все доступные почтовые ящики?

Sub LoopThroughInboxes

Dim ol As Outlook.Application
Dim ns As Outlook.NameSpace
Dim i As Long

Set ol = Outlook.Application
Set ns = ol.GetNamespace("MAPI")

For i = 1 To ns.Folders.Count
 Debug.Print ns.Folders(i).Name
Next i

Если так, то ns.Folders(i).Folders("Inbox") получит входящие для каждого почтового ящика.

3 голосов
/ 22 ноября 2013

To Перейти к библиотеке Mapix

Ссылка на библиотеку Mapix, как указано ниже

Библиотека Mapix для C ++ / MFC

Примечание: Эта библиотека действительна для почтовых ящиков входящих в MS Outlook

3 голосов
/ 13 октября 2011

Используйте Store.GetDefaultFolder вместо Namespace.GetDefaultFolder.Обратите внимание, что Store.GetDefaultFolder был добавлен в Outlook 2010. В более ранних версиях Outlook используется Extended MAPI (C ++ или Delphi) или Погашение (RDOStore.GetDefaultFolder.

1 голос
/ 06 января 2012

Возможно, вы уже давно отказались от этого вопроса, но здесь идет ...

У меня была такая же проблема раньше, и я решил ее, добавив API управления учетными записями Outlook.К сожалению для вас, это ориентированный на C ++ API.(Мой надстройка уже была разработана на языке c ++)

Кроме того, OOM (объектная модель Outlook), которую используют надстройки VBA и .NET, плохо (если есть) поддерживает несколько учетных записей.Добавляя для обмена учетными записями, вы по существу добавили несколько учетных записей в свой профиль.

Итак, вам, возможно, придется перейти на уровень ниже, используя MAPI с c ++, а затем подключить API управления учетными записями Outlook.Это много работы, но это именно то, что я сделал, и это сработало как шарм.

Также, вот пример: http://www.codeproject.com/KB/IP/IOlkAccountManager.aspx

0 голосов
/ 15 сентября 2014

Я думаю, это старый, но кому-то может понадобиться однажды.Вот код для перебора всех папок «Отправленные» в Outlook.(Я думаю, что это будет работать только для Outlook 2010 и новее).

MSOutlook._NameSpace ns = Globals.ThisAddIn.Application.GetNamespace("MAPI");
var accounts = ns.Accounts;
foreach (MSOutlook.Account account in accounts)
{
    try
    {
        // You might want to test if DeliveryStore is null, in case this account is not an Exchange account
        MSOutlook.MAPIFolder sentFolder = account.DeliveryStore.GetDefaultFolder(MSOutlook.OlDefaultFolders.olFolderSentMail);
        if(sentFolder != null)
        {
            SentItems = sentFolder.Items;
            SentItems.ItemAdd += LogMethods.Items_Sent_ItemAdd;
        }
    }
    catch (Exception e)
    {
        BaseClass.log.Log(LoggLevel.Warning, e.Message);
    }
}
...