使用Mailkit访问Exchange共享文件夹

1 c# mailkit

我正在创建一个应用程序,以从Microsoft托管的Exchange服务器(Office 365)上的帐户读取电子邮件和附件。我遇到的困难是我无法找到一种方法来获取MailKit API来查看已连接的电子邮件帐户上的共享文件夹。

我可以连接到我的电子邮件帐户,并查看我的主帐户下的“收件箱”和其他文件夹。在Outlook中,文件夹的树形视图在根目录中显示我的主要帐户(与我的主要电子邮件地址相关联),以及该帐户下的“收件箱”和其他文件夹。然后,Outlook将显示我的共享文件夹名称(与另一个电子邮件地址相关联),该名称也从根开始,其下是收件箱和其他文件夹。共享文件夹(及其关联的电子邮件地址)实际上没有要连接的自己的Exchange帐户。

连接后,我检查了ImapClient.SharedNamespacesImapClient.Others集合,它们都为空。

有没有办法通过MaikKit在Exchange中查看这种类型的共享文件夹?

Sea*_*ean 5

这可以通过在身份验证期间在用户名的末尾附加反斜杠和共享邮箱别名来实现,这是一些示例代码...

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

共享邮箱别名通常默认为电子邮件地址的左侧,@之前