如何选择共享命名空间
本文关键字:共享 命名空间 选择 何选择 | 更新日期: 2023-09-27 18:23:58
使用IMAP-我们在带有"."的共享"user"命名空间下有许多共享邮箱分隔符。
我正在尝试编写一些软件,将这些共享邮箱迁移到Exchange服务器。
我正在尝试打开"用户"共享命名空间中的特定邮箱/文件夹,IMAP服务器对该命名空间的SELECT响应为"否"。使用下面的评论摘录打开收件箱,效果很好。可能是因为我没有访问"根/基本用户文件夹"的权限,但我需要指定子文件夹,所以我不知道如何连接到有问题的共享邮箱。例如,它将是"user.sharedmailboxA"
请原谅我在这里使用的术语,IMAP完全无效!感谢
以下代码不包含"NO",当我尝试并尝试Open方法时,可能会拒绝访问:
static void Main(string[] args)
{
using (var client = new ImapClient())
{
client.Connect("imap.c.com", 993, true);
// Note: since we don't have an OAuth2 token, disable
// the XOAUTH2 authentication mechanism.
client.AuthenticationMechanisms.Remove("XOAUTH2");
client.Authenticate("aa", "sdfdsf");
var user_namespace = client.GetFolder(client.SharedNamespaces[0] );
user_namespace.Open(FolderAccess.ReadOnly);
// The Inbox folder is always available on all IMAP servers...
//var inbox = client.Inbox;
//inbox.Open(FolderAccess.ReadOnly);
//Console.WriteLine("Total messages: {0}", inbox.Count);
//Console.WriteLine("Recent messages: {0}", inbox.Recent);
//for (int i = 0; i < inbox.Count; i++)
//{
// var message = inbox.GetMessage(i);
// Console.WriteLine("Subject: {0}", message.Subject);
//}
//client.Disconnect(true);
}
}
}
在IMAP中,您不能总是选择一个文件夹。有时它具有'NoSelect
或'NonExistent
属性,如果您尝试选择它们,这两个属性都将以NO失败。
通常,您无法打开命名空间文件夹(典型的例外情况是,INBOX被视为IMAP服务器(如Courier IMAP)上的命名空间)。
您需要做的是查询user_namespace
的子文件夹,并尝试选择这些文件夹中的一个(假设它没有FolderAttributes.NoSelect
或FolderAttributes.NonExistent
属性):
foreach (var folder in user_namespace.GetSubfolders (false)) {
if ((folder.Attributes & (FolderAttributes.NoSelect | FolderAttributes.NonExistent)) == 0))
folder.Open (FolderAccess.ReadOnly);
}