Доступ к общим папкам Exchange с помощью Mailkit
Я создаю приложение для чтения электронных писем и вложений из учетной записи на сервере Exchange, размещенном в Microsoft (Office 365). Трудность, с которой я сталкиваюсь, заключается в том, что я не могу найти способ заставить MailKit API видеть общие папки в учетной записи электронной почты, к которой я подключился.
Я могу подключиться к своей учетной записи электронной почты и просмотреть папку "Входящие" и другие папки, которые находятся под моей основной учетной записью. В Outlook древовидное представление папок показывает мою основную учетную запись (связанную с моим основным адресом электронной почты) в корне, с папками "Входящие" и другими папками под этой учетной записью. Затем Outlook показывает имя моей общей папки (связанной с другим адресом электронной почты), также начиная с корня, с папкой "Входящие" и другими папками под ней. Общая папка (со связанным с ней адресом электронной почты) фактически не имеет собственной учетной записи Exchange для подключения.
После подключения я проверил ImapClient.SharedNamespaces
а также ImapClient.Others
коллекции и они оба пусты.
Есть ли способ увидеть этот тип общей папки в Exchange с MaikKit?
3 ответа
Это возможно, добавив обратную косую черту и псевдоним общего почтового ящика к концу имени пользователя во время аутентификации, вот пример кода...
void Main()
{
var userName = "main@user.com"; // 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);
}
}
Псевдоним общего почтового ящика обычно по умолчанию равен левой части адреса электронной почты до @
Exchange не предоставляет способ получить доступ к вашим общим папкам через IMAP, поэтому невозможно сделать то, что вы пытаетесь сделать, используя IMAP.
Ответ Шона 17 января правильный. Обратите внимание, что вы ДОЛЖНЫ удалить аутентификацию XOATH2, поскольку Office 365 не поддерживает ее, даже если она говорит, что это происходит при первом подключении. MailKit затем пытается использовать XOAUTH2 и имеет внутреннее исключение, когда он не работает. Это, вероятно, ошибка в MailKit.