【问题标题】:MailKit GetSubfoldersMailKit 获取子文件夹
【发布时间】:2019-05-22 22:02:59
【问题描述】:

我正在使用 Mailkit GetSubfolders 方法,该方法向服务器发出此请求/响应

C: A00000005 LIST "" "INBOX.%" RETURN (SUBSCRIBED CHILDREN STATUS (UIDVALIDITY))
S: * LIST (\HasNoChildren \UnMarked) "." INBOX.kkkk
S: * STATUS INBOX.kkkk (UIDVALIDITY 1491227899)
S: * LIST (\HasChildren \UnMarked) "." INBOX.Archive
S: * LIST (\HasChildren \UnMarked) "." INBOX.spam
S: * LIST (\Subscribed \HasNoChildren \UnMarked) "." INBOX.Sent
S: * STATUS INBOX.Sent (UIDVALIDITY 1491227490)
S: * LIST (\Subscribed \HasNoChildren \UnMarked) "." INBOX.Junk
S: * STATUS INBOX.Junk (UIDVALIDITY 1491227488)
S: * LIST (\Subscribed \HasNoChildren \UnMarked) "." INBOX.Drafts
S: * STATUS INBOX.Drafts (UIDVALIDITY 1491227487)
S: * LIST (\Subscribed \HasNoChildren \UnMarked) "." INBOX.Trash
S: * STATUS INBOX.Trash (UIDVALIDITY 1491227603)
S: A00000005 OK List completed (0.001 + 0.000 secs).

但是,我注意到 Outlook 和其他邮件客户端显示了我使用 MailKit GetSubfolders 获得的更多文件夹。特别是 INBOX.INBOX.dfgdfg 文件夹。我执行了 LIST "" "INBOX.*" (将 % 更改为 *),我看到这次服务器返回了丢失的文件夹(见下文)。我的问题是如何使用 MailKit 方法进入 INBOX.INBOX.dfgdfg 文件夹?

C: A00000005 LIST "" "INBOX.*" RETURN (SUBSCRIBED CHILDREN STATUS (UIDVALIDITY))
S: * LIST (\HasNoChildren \UnMarked) "." INBOX.kkkk
S: * STATUS INBOX.kkkk (UIDVALIDITY 1491227899)
S: * LIST (\HasChildren \UnMarked) "." INBOX.Archive
S: * LIST (\Subscribed \HasNoChildren \UnMarked) "." INBOX.Archive.000
S: * STATUS INBOX.Archive.000 (UIDVALIDITY 1491227889)
S: * LIST (\HasNoChildren \UnMarked) "." INBOX.Archive.aaaaa
S: * STATUS INBOX.Archive.aaaaa (UIDVALIDITY 1491227877)
S: * LIST (\HasChildren \UnMarked) "." INBOX.spam
S: * LIST (\HasNoChildren \UnMarked) "." INBOX.spam.666
S: * STATUS INBOX.spam.666 (UIDVALIDITY 1491227878)
S: * LIST (\HasNoChildren \UnMarked) "." INBOX.spam.nnhnhn
S: * STATUS INBOX.spam.nnhnhn (UIDVALIDITY 1491227870)
S: * LIST (\HasNoChildren \UnMarked) "." INBOX.spam.test
S: * STATUS INBOX.spam.test (UIDVALIDITY 1491227856)
S: * LIST (\Subscribed \HasNoChildren \UnMarked) "." INBOX.Sent
S: * STATUS INBOX.Sent (UIDVALIDITY 1491227490)
S: * LIST (\Subscribed \HasNoChildren \UnMarked) "." INBOX.Junk
S: * STATUS INBOX.Junk (UIDVALIDITY 1491227488)
S: * LIST (\Subscribed \HasNoChildren \UnMarked) "." INBOX.Drafts
S: * STATUS INBOX.Drafts (UIDVALIDITY 1491227487)
S: * LIST (\Subscribed \HasNoChildren \UnMarked) "." INBOX.Trash
S: * STATUS INBOX.Trash (UIDVALIDITY 1491227603)
S: * LIST (\HasNoChildren \UnMarked) "." INBOX.INBOX.dfgdfg
S: * STATUS INBOX.INBOX.dfgdfg (UIDVALIDITY 1491227900)
S: A00000005 OK List completed (0.001 + 0.000 secs).

【问题讨论】:

    标签: imap mailkit


    【解决方案1】:

    我能够回答我的问题。 ImapClient.GetFolders 正在返回命名空间中的所有文件夹,包括丢失的 INBOX.INBOX.dfgdfg

    【讨论】:

      【解决方案2】:

      如果你想递归,你应该在GetSubfolders()返回的每个文件夹上调用GetSubfolders()

      使用* 的问题在于,在某些 IMAP 服务器上(cough UW.IMAPd cough),如果用户有符号链接,服务器响应将永远不会结束因为它没有正确检测符号链接递归。

      【讨论】:

      • 嗯...我想最好不要支持像 UW.IMAPd 这样的服务器,而不是在我的应用程序中不可见的文件夹(但在其他流行的电子邮件客户端中可见)。其他电子邮件客户端显示这些文件夹的事实使我得出结论,他们使用 LIST INBOX.* 而不是 LIST INBOX.%,因为我找不到 Dovecot 报告此文件夹 INBOX.INBOX.dfgdfg 的任何其他方式。
      猜你喜欢
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多