如何选择共享命名空间

219

使用IMAP-在共享的“用户”名称空间下,我们有许多带有“。”的共享邮箱。定界符。

我正在尝试编写一些将这些共享邮箱迁移到Exchange服务器的软件。

我正在尝试在“用户”共享命名空间中打开特定的邮箱/文件夹,IMAP服务器对SELECT响应为否。使用下面的评论摘录打开,对于Inbox来说还可以。可能是因为我无权访问“ root / base-user文件夹”,但需要指定子文件夹,所以我不知道如何连接到有问题的共享邮箱。例如,它将是“ 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);
        }
    }
}
jstedfast

在IMAP中,您不能总是选择一个文件夹。有时,它具有\NoSelector\NonExistent属性,如果您尝试选择它们,它们都将失败,并显示NO。

通常,您无法打开名称空间文件夹(通常的例外是将INBOX视为IMAP服务器(例如Courier IMAP)上的名称空间时。

您需要做的是查询的子文件夹,user_namespace然后尝试选择这些文件夹之一(假设它不具有FolderAttributes.NoSelectFolderAttributes.NonExistent属性):

foreach (var folder in user_namespace.GetSubfolders (false)) {
    if ((folder.Attributes & (FolderAttributes.NoSelect | FolderAttributes.NonExistent)) == 0))
        folder.Open (FolderAccess.ReadOnly);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章