2016-12-04 8 views
0

Я пытаюсь использовать Redemption для отображения папки с общим почтовым ящиком Exchange.Как использовать Redemption, чтобы открыть папку с общим почтовым ящиком Exchange и отобразить ее

Например, я могу открыть папку «Входящие», «Контакты» или «Календарь» без «Искупления» следующим образом.

Outlook.Application app = new Outlook.Application(); 
Outlook.NameSpace ns = app.GetNamespace("MAPI"); 
string recipientName = "[email protected]"; 
Outlook.Recipient recip = ns.CreateRecipient(recipientName); 
recip.Resolve(); 

if (recip.Resolved) 
{ 
    Outlook.MAPIFolder InboxFolder = ns.GetSharedDefaultFolder(recip, Outlook.OlDefaultFolders.olFolderInbox); 
    //Outlook.MAPIFolder ContactsFolder = ns.GetSharedDefaultFolder(recip, Outlook.OlDefaultFolders.olFolderContacts); 
    //Outlook.MAPIFolder CalendarFolder = ns.GetSharedDefaultFolder(recip, Outlook.OlDefaultFolders.olFolderCalendar); 
    InboxFolder.Display(); 
} 

Но поскольку olFolderSentMail не может быть указан в качестве аргумента я пытающимся использовать Redemption для отображения отправленной папки. Ссылка https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook._namespace.getshareddefaultfolder.aspx

Так вот код, который я пытаюсь, но не могу понять, как .Display(); папку с использованием Redemption или если это возможно.

Outlook.Application app = new Outlook.Application(); 
Outlook.NameSpace ns = app.GetNamespace("MAPI"); 
string recipientName = "[email protected]"; 
Outlook.Recipient recip = ns.CreateRecipient(recipientName); 
recip.Resolve(); 

Redemption.RDOSession session = new Redemption.RDOSession(); 
session.MAPIOBJECT = Application.Session.MAPIOBJECT; 

if (recip.Resolved) 
{ 
    Redemption.RDOFolder Sentfolder = session.GetSharedDefaultFolder(recip, rdoDefaultFolders.olFolderSentMail); 
    Sentfolder. // There's no Intellisense for Display 
} 

Update: Dmity была правильной, но мне все равно нужно Redemption получить EntryID и StoreID для Переданной общей папки почтового ящика, потому что я не мог получить его с помощью _NameSpace.GetSharedDefaultFolder. Вот что я сделал, надеюсь, это помогает кому-то другому.

Outlook.Application app = new Outlook.Application(); 
Outlook.NameSpace ns = app.GetNamespace("MAPI"); 
string recipientName = "[email protected]";   
Outlook.Recipient recip = ns.CreateRecipient(recipientName); 
recip.Resolve(); 
Redemption.RDOSession session = new Redemption.RDOSession(); 
session.MAPIOBJECT = Application.Session.MAPIOBJECT; 

if (recip.Resolved) 
    { 
    Redemption.RDOFolder Sentfolder = session.GetSharedDefaultFolder(recip, rdoDefaultFolders.olFolderSentMail); 
    string folderID = Sentfolder.EntryID; 
    string storeID = Sentfolder.StoreID; 
    Outlook.MAPIFolder displaySent = ns.GetFolderFromID(folderID, storeID); 
    displaySent.Display(); 
    }   

ответ

1

Папки отображаются в Outlook, для этого нет чистого API MAPI. Вы можете открыть папку в OOM с помощью Namespace.GetFolderFromID, а затем позвонить MAPIFolder.Display.

+0

Как всегда, спасибо Dmitry! Мне все еще нужно было использовать Redemption, чтобы получить StoreID и EntryID для общей папки Sent. –