2016-12-04 2 views
0

J'essaie d'utiliser Redemption pour afficher un dossier envoyé de boîte aux lettres partagée Exchange.Comment utiliser Redemption pour ouvrir un dossier envoyé de boîte aux lettres partagée Exchange et l'afficher

Par exemple, je peux ouvrir la boîte de réception, les contacts ou le dossier du calendrier sans Redemption comme suit.

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

Mais depuis olFolderSentMail ne peut pas être spécifié comme argument que je tente d'utiliser Redemption pour afficher le dossier envoyé. Référence- https://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook._namespace.getshareddefaultfolder.aspx

Donc, voici le code que j'essaie mais je n'arrive pas à comprendre comment .Display(); le dossier utilisant Redemption ou si c'est même possible.

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 
} 

Mise à jour: Dmity était correcte mais je encore besoin obtenir le rachat EntryID et StoreID pour le dossier de boîte aux lettres Envoyé partagé parce que je ne pouvais pas le récupérer à l'aide du _NameSpace.GetSharedDefaultFolder. Voici ce que j'ai fini par faire, j'espère que ça aide quelqu'un d'autre.

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

Répondre

1

Les dossiers sont affichés par Outlook, il n'existe aucune API MAPI pure pour cela. Vous pouvez rouvrir le dossier dans MOO en utilisant Namespace.GetFolderFromID, puis appelez MAPIFolder.Display.

+0

Comme toujours, merci Dmitry! J'avais encore besoin d'utiliser Redemption pour obtenir le StoreID et l'EntryID pour le dossier Sent partagé. –