Поиск в папках Imap непрочитанных писем с помощью Mailkit и Powershell - PullRequest
0 голосов
/ 06 марта 2020

Я хочу найти во всех моих папках Imap непрочитанные письма с помощью Mailkit и Powershell. Но я не могу даже перечислить все папки. Вот код:

$cl = New-Object MailKit.Net.Imap.ImapClient([mailkit.protocollogger]::new([console]::OpenStandardOutput()))

#connect
$cl.Connect($mailserver, $port)
$cl.Authenticate($username,$password)   
$cl.GetFolders($Cl.PersonalNamespaces[0])

Результат всегда: « Папка в данный момент не открыта ». Но я думаю, что мне нужно сначала прочитать объекты папки, чтобы открыть их? Интересно, что протокол протокола перечисляет все мои папки в порядке:

Connected to imaps://.................
S: * OK [CAPABILITY IMAP4rev1 CHILDREN ENABLE ID IDLE LIST-EXTENDED LIST-STATUS LITERAL- MOVE NAMESPACE QUOTA SASL-IR SORT SPECIAL-USE THREAD=ORDEREDSUBJECT UIDPLUS UNSELECT WITHIN AUTH=LOGIN AUTH=PLAIN] IMAP server ready H mieue103 15.4 IMAP-1MRDBi-1ixnXt3r6a-00NV8i
C: A00000000 AUTHENTICATE PLAIN AGQucmfhgffhtFjZSghgQAjrhgrTc1OTg4NjUweHttztYj
S: A00000000 OK AUTHENTICATE completed
C: A00000001 CAPABILITY
S: * CAPABILITY IMAP4rev1 CHILDREN ENABLE ID IDLE LIST-EXTENDED LIST-STATUS LITERAL- MOVE NAMESPACE QUOTA SASL-IR SORT SPECIAL-USE THREAD=ORDEREDSUBJECT UIDPLUS UNSELECT WITHIN APPENDLIMIT=140000000
S: A00000001 OK CAPABILITY completed
C: A00000002 NAMESPACE
S: * NAMESPACE (("" "/")) NIL NIL
S: A00000002 OK NAMESPACE completed
C: A00000003 LIST "" "INBOX" RETURN (SUBSCRIBED CHILDREN)
S: * LIST (\HasNoChildren \Subscribed) "/" INBOX
S: A00000003 OK LIST completed
C: A00000004 LIST (SPECIAL-USE) "" "*" RETURN (SUBSCRIBED CHILDREN)
S: * LIST (\Archive \HasChildren \Subscribed) "/" Archiv
S: * LIST (\Drafts \HasNoChildren \Subscribed) "/" Entw&APw-rfe
S: * LIST (\Sent \HasNoChildren \Subscribed) "/" "Gesendete Objekte"
S: * LIST (\Trash \HasNoChildren \Subscribed) "/" Papierkorb
S: * LIST (\Junk \HasNoChildren \Subscribed) "/" Spam
S: A00000004 OK LIST completed
C: A00000005 LIST (SUBSCRIBED) "" "*" RETURN (CHILDREN)
S: * LIST (\HasChildren \Subscribed) "/" Work1
S: * LIST (\HasChildren \Subscribed) "/" Work2

... long list of all my folders ...

S: A00000005 OK LIST completed

Но я просто получаю сообщение об ошибке обратно:

format-default : The folder is not currently open.
    + CategoryInfo          : NotSpecified: (:) [format-default], FolderNotOpenException
    + FullyQualifiedErrorId : MailKit.FolderNotOpenException,Microsoft.PowerShell.Commands.FormatDefaultCommand

1 Ответ

0 голосов
/ 06 марта 2020

Ваш журнал показывает, что фрагмент кода, который вы вставили, работает нормально.

Вы не получаете исключение ни от одного кода, который вы вставили.

Вы получаете исключение из кода после кода, который вы вставили.

Чтобы исправить упомянутое исключение, вам нужно вызвать метод Open(FolderAccess.ReadWrite) для папки, которую вы пытаетесь найти, прежде чем вы сможете вызвать Search().

...