【问题标题】:Accessing Exchange shared folders using Mailkit使用 Mailkit 访问 Exchange 共享文件夹
【发布时间】:2020-07-30 19:48:34
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# mailkit


    【解决方案1】:

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

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

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

    更新:根据@Nischo 评论 - 不再需要删除 XOAUTH2。更多详情:https://github.com/jstedfast/MailKit/issues/566

    因此删除了以下行,因为它不再是

    client.AuthenticationMechanisms.Remove("XOAUTH2");
    

    【讨论】:

    • 对我来说,在 2020 年 7 月无需删除 XOAUTH2 是可能的。 client.AuthenticationMechanisms.Remove("XOAUTH2");
    【解决方案2】:

    Exchange 不提供通过 IMAP 访问您的共享文件夹的方法,因此无法使用 IMAP 执行您尝试执行的操作。

    【讨论】:

    • 你有这方面的参考吗?
    【解决方案3】:

    肖恩在 1 月 17 日的回答是正确的。请注意,您必须删除 XOATH2 身份验证,因为 Office 365 不支持它,即使它在您首次连接时表示支持。 MailKit 然后尝试使用 XOAUTH2 并在它无法工作时出现内部异常。这可能是 MailKit 中的一个错误。

    【讨论】:

      猜你喜欢
      • 2011-03-06
      • 2015-01-15
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      相关资源
      最近更新 更多