gpt4 book ai didi

c# - 使用 Mailkit 访问 Exchange 共享文件夹

转载 作者:太空宇宙 更新时间:2023-11-03 19:51:27 24 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

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

关于c# - 使用 Mailkit 访问 Exchange 共享文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38747822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com