2017-07-31 2 views
0

J'utilise Mailkit méthode GetSubfolders qui émet cette requête/réponse au serveurMailKit 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). 

Cependant, je remarqué Outlook et d'autres client de messagerie affiche plusieurs dossiers pour mon compte que je reçois avec GetSubfolders de MailKit. En particulier dossier INBOX.INBOX.dfgdfg. J'ai exécuté LIST "" "INBOX. *" (En changeant% à *) et je vois cette fois le serveur retourne le dossier manquant (voir ci-dessous). Ma question est comment accéder au dossier INBOX.INBOX.dfgdfg en utilisant les méthodes MailKit?

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). 

Répondre

0

J'ai été capable de répondre à ma question. ImapClient.GetFolders retourne tous les dossiers dans l'espace de noms, y compris le manque INBOX.INBOX.dfgdfg

0

Vous vouliez appeler GetSubfolders() sur chaque dossier retourné par GetSubfolders() si vous voulez récursif.

Le problème avec l'utilisation * est que sur certains serveurs IMAP (toux UW.IMAPd toux), si l'utilisateur a des liens symboliques, la réponse du serveur ne finira jamais car il ne détecte pas correctement récursion symlink.

+0

Eh bien ... Je suppose qu'il est préférable de ne pas supporter des serveurs comme UW.IMAPd que d'avoir des dossiers qui ne sont pas visibles dans mon application (mais qui sont visibles dans d'autres clients de messagerie courants). Le fait que d'autres clients de messagerie affichent ces dossiers m'amène à la conclusion qu'ils utilisent LIST INBOX. * Plutôt que LIST INBOX.%, Parce que je ne trouve pas d'autre moyen Dovecot de signaler ce dossier INBOX.INBOX.dfgdfg. – ekalchev