PowerShell - автоматизируйте загрузку файлов .pst в Outlook и экспорт отдельных элементов .msg внутри.

В настоящее время я работаю над проектом, в котором мне дали много файлов .pst. Эти файлы содержат отдельные файлы .msg, внутри которых мне нужно выполнить анализ. Я планирую прочитать файлы .msg с помощью Python и провести там свой анализ, но сейчас я борюсь с работой с файлами .pst.

Мне нужно автоматизировать процесс загрузки файлов .pst и экспорта отдельных файлов .msg внутри. Кажется, PowerShell - лучшее решение для этого, учитывая его интеграцию с Outlook, но я изо всех сил пытаюсь найти в Интернете какие-либо решения о том, как я могу этого добиться. Есть ли у кого-нибудь решения этой проблемы?


person rubs90    schedule 24.06.2020    source источник
comment
Это должен быть PowerShell? это может сработать для вас (?)   -  person Bill Jetzer    schedule 25.06.2020
comment
Привет, спасибо за ответ. К сожалению, я не знаю C # и буду бороться с этим   -  person rubs90    schedule 25.06.2020


Ответы (2)


Вы можете создать экземпляр COM-объекта Outlook.Application и использовать его Namespace.AddStore / AddStoreEx, чтобы открыть файл PST (можно подумать, что метод возвращает только что добавленное хранилище, но это не так). Затем вы можете найти это хранилище в коллекции Namespace.Stores и обработать его папки и сообщения, вызвав MailItem.SaveAs (.., olMsg) для каждого сообщения.

Если можно использовать Redemption, это позволит вам открыть файл PST, не загрязняя основной профиль Файлы PST - вызов RDOSession .LogonPstStore (он создает и удаляет временный профиль, настроенный для использования указанный файл PST и возвращает объект RDOPstStore). Начните с RDOStore .RootIPMFolder и обработайте все подпапки (RDOFolder .Folders) и сообщения (RDOFolder .Items) вызов RDOMail .SaveAs(..., olMsg).

person Dmitry Streblechenko    schedule 25.06.2020

Формат файла PST описан в Формат файла личных папок Outlook (.pst) в MSDN.

Неясно, когда и где вы собираетесь запускать код ... Помните, что Microsoft в настоящее время не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любых необслуживаемых, неинтерактивных клиентских приложений или компонентов (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и / или взаимоблокировку при запуске Office в этой среде.

Если вы создаете решение, работающее на стороне сервера, вам следует попытаться использовать компоненты, которые были безопасны для выполнения в автоматическом режиме. Или вам следует попытаться найти альтернативы, которые позволяют запускать хотя бы часть кода на стороне клиента. Если вы используете приложение Office из серверного решения, у этого приложения не будет многих необходимых возможностей для успешной работы. Кроме того, вы будете рисковать стабильностью вашего решения в целом. Подробнее об этом читайте в Рекомендации по серверной автоматизации Office.

Итак, если вы собираетесь запускать код на стороне сервера или из службы Windows, автоматизация Outlook не для вас. Вам необходимо учитывать любые сторонние библиотеки или компоненты, предназначенные для выполнения на стороне сервера.

Например, вы можете взглянуть на pypff, который представляет собой оболочку python для библиотеки C libpff, которая позволяет доступ к электронной почте и структуре каталогов Pst-файлов в Python.

import pypff

pst = pypff.file()
pst.open("MyPst.pst")
pst.close()

Кроме того, вы можете найти страницу Чтение файлов PST со страницы win32 или pypff полезный.

person Eugene Astafiev    schedule 25.06.2020