Сценарий Powershell и imapX для навигации по подпапкам

Моя задача: Создать автоматизированную задачу для периодического сохранения вложений отчетов Gmail в папки Win10 для дальнейшего анализа. В настоящее время это выполняется вручную. Платформа представляет собой локальный ПК Win10 и не использует Outlook365. Локальный Outlook.exe связан с Gmail.

Powershell 7x/VSCode(1.52) является платформой, и различные стратегии кодирования были предприняты и не увенчались успехом. Многочисленные предложения от Stackoverflow были изучены безуспешно. Скрипт загрузил ImapX.DLL Version=2.0.0.19

Цель: перейти к подпапкам электронной почты и получить содержимое. Код до сих пор может извлекаться из корневой папки INBOX, но это не то место, где находятся необходимые сообщения. С помощью правил Outlook входящие сообщения направляются в необходимые подпапки. Существуют 2 обязательные подпапки с содержимым реплики, любой из них подойдет. Подпапки сообщений легко просматривать в Outlook 2019.

Фрагмент кода до сих пор ... Здесь все идет не так, как ожидалось, поэтому код ошибочен ??? Поиск в подпапке не работает. #Получить объект папки/подпапки, содержащий необходимые электронные письма.

*************** Start Of Code
$numberOfMessagesLimit = 15
$MyFilter= $client.folders | Where-Object { $_.path -eq 'INBOX'}              #<< Successful

#these test variants of path all will return NULL
#$MyFilter1 = $client.folders | Where-Object { $_.path -eq 'INBOX/Cindy'}
#$MyFilter2 = $client.folders | Where-Object { $_.path -eq '.\\inbox/Cindy'}
#$MyFilter3 = $client.folders | Where-Object { $_.path -eq '.\inbox/Cindy'}
#$MyFilter4 = $client.folders | Where-Object { $_.path -eq 'INBOX/Cynthia Whitburn'}
#$MyFilter5 = $client.folders | Where-Obje`enter code here`ct { $_.path -eq '\\INBOX/Cynthia Whitburn'}
#$MyFilter6 = $client.folders | Where-Object { $_.path -eq '\INBOX/Cynthia Whitburn'}

# Search email threads inside the subfolder
$messages = $MyFilter.search("All", $client.Behavior.MessageFetchMode, $numberOfMessagesLimit) #<< Successful

*************** End Of Code

Первая строка $MyFilter выполнена успешно, но следующие строки терпят неудачу из-за возврата NULL.

Чтобы уточнить, эти пути и имена существуют в объекте $client.folders, созданном ранее, и точно совпадают с тем, что отображается в объекте, как показано в MyFilter2 и MyFilter5, поэтому, несмотря на то, что все фильтры* возвращают NULL.

Поэтому я прошу дать вам руководство о том, как перейти к нужной папке и захватить сообщения только в этой папке.

Большое спасибо и признательность за любые советы, которые могут быть предложены. А


person Al Perkins    schedule 29.05.2021    source источник
comment
client.Folders.Inbox.SubFolders[MyFolder] imapx.org/docs/wikipage%20 (7).html   -  person Daniel    schedule 30.05.2021
comment
Спасибо за ваш ответ Даниил. Вы помогаете мне сосредоточиться и смог достичь поставленной задачи. Теперь я могу читать из подпапок. { Было бы полезно, если бы документы Wiki были расширены, чтобы охватить возможности параметров для различных доступных методов, но кажется, что Wiki является лучшим из доступных для mapiX. Кроме того, примеры Wiki могут только предлагать, как использовать в Powershell. Вырезать и вставить не удастся.} Thx A   -  person Al Perkins    schedule 30.05.2021


Ответы (1)


Спасибо за участие. Таким образом, ядром этого вопроса был клиентский объект, созданный на основе чтения сервера gmail, который по умолчанию был «ленивым», что является параметром метода «$client.Behavior.FolderTreeBrowseMode = Lazy». При изменении на «Полный» создается полный набор доступных папок. Обратная сторона, конечно, гораздо более медленная производительность. В документации для этого пакета imapX немного информации, поэтому знание полного набора поддерживаемых параметров поведения параметров является загадкой.

person Al Perkins    schedule 31.05.2021