[在尝试打开邮件文件夹时,我们在客户端遇到了一个问题,但找不到它,因此我创建了以下方法,以尽最大努力找到该邮件文件夹所在的文件夹名称空间。] >
private FolderNamespace FindFolderNamespace(ImapClient imapClient, string folderName) { string[] folderNameParts = folderName.Split('/'); FolderNamespaceCollection folderNamespaces = new FolderNamespaceCollection(); foreach (FolderNamespace folderNamespace in imapClient.PersonalNamespaces) folderNamespaces.Add(folderNamespace); foreach (FolderNamespace folderNamespace in imapClient.SharedNamespaces) folderNamespaces.Add(folderNamespace); foreach (FolderNamespace folderNamespace in imapClient.OtherNamespaces) folderNamespaces.Add(folderNamespace); Dictionary<FolderNamespace, string> potentialFolderNamespaces = new Dictionary<FolderNamespace, string>(); foreach (FolderNamespace folderNamespace in folderNamespaces) { IMailFolder mailFolder = imapClient.GetFolder(folderNamespace); foreach (string folderNamePart in folderNameParts) { if (mailFolder.GetSubfolders().Any(mf => mf.Name.Equals(folderNamePart, StringComparison.OrdinalIgnoreCase))) { mailFolder = mailFolder.GetSubfolder(folderNamePart); } else { break; } } if (mailFolder.FullName.IndexOf(folderName, StringComparison.OrdinalIgnoreCase) >= 0) { return folderNamespace; } if (!mailFolder.IsNamespace) { potentialFolderNamespaces.Add(folderNamespace, mailFolder.FullName); } } FolderNamespace closestFolderNameSpace = potentialFolderNamespaces.OrderByDescending(n => n.Value.Length).FirstOrDefault().Key; if (closestFolderNameSpace != null) { return closestFolderNameSpace; } FolderNamespace defaultFolderNamespace = folderNamespaces.FirstOrDefault(); return defaultFolderNamespace; }
但是,这没有用。经过仔细检查,似乎PersonalNamespaces,SharedNamespaces和OtherNamespaces都是空的,因此该帐户没有文件夹名称空间。
作为快速检查,我尝试了以下方法:
imapClient.GetFolder(folderName)
但是,这引发了一个ImapProtocolException的说法:
IMAP服务器意外断开连接。
仅尝试使用根文件夹名称也做了同样的事情。
我有点茫然,我似乎无法找到该帐户,因此无法在该帐户上打开文件夹。我该怎么办?
更多详细信息:
协议日志:
Connected to --cut--
S: * OK The Microsoft Exchange IMAP4 service is ready. --cut--
C: A00000000 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS MOVE ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
S: A00000000 OK CAPABILITY completed.
C: A00000001 AUTHENTICATE XOAUTH2 --cut--
S: A00000001 NO AUTHENTICATE failed.
C: A00000002 AUTHENTICATE PLAIN --cut--
S: A00000002 OK AUTHENTICATE completed.
C: A00000003 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS MOVE ID UNSELECT CLIENTACCESSRULES CLIENTNETWORKPRESENCELOCATION BACKENDAUTHENTICATE CHILDREN IDLE NAMESPACE LITERAL+
S: A00000003 OK CAPABILITY completed.
C: A00000004 NAMESPACE
S: A00000004 BAD User is authenticated but not connected.
C: A00000005 LIST "" "INBOX"
S: A00000005 BAD User is authenticated but not connected.
S: * BYE Connection closed. 14
[在尝试打开邮件文件夹时,我们在客户端遇到了一个问题,但找不到它,因此我创建了以下方法,以尽最大努力找到邮件文件夹的文件夹名称空间...] >
这里是问题:
C: A00000004 NAMESPACE
S: A00000004 BAD User is authenticated but not connected.
C: A00000005 LIST "" "INBOX"
S: A00000005 BAD User is authenticated but not connected.
S: * BYE Connection closed. 14