2016-08-03 4 views
1

Я создаю приложение для чтения писем и вложений из учетной записи на размещенном на Microsoft Exchange сервере (Office 365). Трудность, с которой я сталкиваюсь, заключается в том, что я не могу найти способ заставить MailKit API видеть общие папки в учетной записи электронной почты, к которой я подключился.Доступ к общим папкам Exchange с использованием Mailkit

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

При подключении я осмотрел коллекции ImapClient.SharedNamespaces и ImapClient.Others, и они оба пустые.

Есть ли способ увидеть этот тип общей папки в Exchange с помощью MaikKit?

ответ

1

Exchange не предоставляет способ получить доступ к вашим общим папкам через IMAP, поэтому невозможно выполнить то, что вы пытаетесь сделать, используя IMAP.

+0

У вас есть ссылка на это? – ogborstad

3

Это возможно обратный слеш и общий псевдоним почтового ящика к концу имени пользователя во время аутентификации, вот пример кода ...

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

Общие псевдоним почтового ящика обычно по умолчанию в левой части адрес электронной почты до @

-1

Ответ Шона 17 января верен. Обратите внимание, что вы ДОЛЖНЫ удалить аутентификацию XOATH2, поскольку Office 365 не поддерживает ее, даже если она говорит, что это происходит при первом подключении. MailKit затем пытается использовать XOAUTH2 и имеет внутреннее исключение, когда он не работает. Вероятно, это ошибка в MailKit.

Смежные вопросы