2016-08-03 9 views
1

Ich erstelle eine Anwendung zum Lesen von E-Mails und Anhängen von einem Konto auf einem von Microsoft gehosteten Exchange-Server (Office 365). Die Schwierigkeit, die ich habe, ist, dass ich keine Möglichkeit finde, die MailKit-API dazu zu bringen, freigegebene Ordner in dem E-Mail-Konto zu sehen, mit dem ich mich verbunden habe.Zugriff auf freigegebene Exchange-Ordner mithilfe von Mailkit

Ich kann eine Verbindung zu meinem E-Mail-Konto herstellen und meinen Posteingang und andere Ordner anzeigen, die sich unter meinem Hauptkonto befinden. In Outlook zeigt die Baumansicht von Ordnern mein Hauptkonto (das mit meiner Haupt-E-Mail-Adresse verknüpft ist) im Stammverzeichnis mit dem Posteingang und anderen Ordnern unter diesem Konto an. Outlook zeigt dann den Namen meines freigegebenen Ordners (der mit einer anderen E-Mail-Adresse verknüpft ist) an, der ebenfalls im Stammverzeichnis beginnt, mit seinem Posteingang und anderen Ordnern darunter. Der freigegebene Ordner (mit der zugehörigen E-Mail-Adresse) hat kein eigenes Exchange-Konto zum Herstellen einer Verbindung.

Wenn verbunden, habe ich die ImapClient.SharedNamespaces und ImapClient.Others Sammlungen untersucht und sie sind beide leer.

Gibt es eine Möglichkeit, diesen Typ von freigegebenen Ordner in Exchange mit MaikKit zu sehen?

Antwort

1

Exchange bietet keine Möglichkeit, über IMAP auf freigegebene Ordner zuzugreifen. Daher ist es unmöglich, das zu tun, was Sie mit IMAP versuchen.

+0

Haben Sie eine Referenz? – ogborstad

3

Dies ist möglich, durch einen Schrägstrich und die gemeinsame Mailbox Alias ​​an das Ende des Benutzernamens bei der Authentifizierung anhängt, hier einige Beispiel-Code ...

void Main() 
{ 
    var userName = "[email protected]"; // The email address that has permissions to the shared mailbox 
    var sharedMailboxAlias = "aliasName"; // This is the alias name as setup in Exchange 
    var password = Util.GetPassword("Office365Password"); // Util.Password is a LinqPad method 
    using (var client = new ImapClient()) 
    { 
     client.Connect("outlook.office365.com", 993, true); 
     client.AuthenticationMechanisms.Remove("XOAUTH2"); 
     client.Authenticate(userName + @"\" + sharedMailboxAlias, password); 
     var inbox = client.Inbox; 
     inbox.Open(FolderAccess.ReadOnly); 
     Console.WriteLine("Total messages: {0}", inbox.Count); 
     Console.WriteLine("Recent messages: {0}", inbox.Recent); 
     client.Disconnect(true); 
    } 
} 

Die gemeinsame Mailbox Alias ​​in der Regel standardmäßig auf den linken Teil der die E-Mail-Adresse vor dem @

-1

Die Antwort von Sean am 17. Januar ist richtig. Beachten Sie, dass Sie die XOATH2-Authentifizierung entfernen müssen, da Office 365 sie nicht unterstützt, obwohl dies bei der ersten Verbindung der Fall ist. MailKit versucht dann XOAUTH2 zu verwenden und hat eine interne Ausnahme, wenn es nicht funktioniert. Dies ist wahrscheinlich ein Fehler in MailKit.