Можно ли перебирать только открытые / отображаемые электронные письма Outlook, используя Python? - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь получить информацию в python из электронной почты в Outlook. Я новичок в python - я много сделал с win32api и selenium, но я еще не написал ни одного скрипта для работы с Outlook. При этом я изначально полагал, что это будет довольно легко, а теперь кажется, что это невозможно.

Все, что я могу найти в python / Outlook, - это циклический просмотр всей папки «Входящие» или назначенной папки (в основном обработка пакета электронных сообщений, хранящихся где-то). Я не хочу этого делать, потому что отправитель, тема, содержание тела, местоположение папки и т. Д. Являются переменными. Я просто хочу просмотреть сообщения, которые в данный момент открыты. В идеале я должен дважды щелкнуть по электронной почте, чтобы открыть ее из своего почтового ящика, запустить код и получить ссылку на код, открывающий электронную почту.

Мне очень легко сделать это успешно в VBA, и я использую все этовремя. Я перебираю все открытые окна Outlook, пока не будет найдена конкретная фраза (уникальная для нужной мне электронной почты).

VBA:

For i = 1 To outlookApp.Inspectors.Count
    Set eMail = outlookApp.Inspectors.Item(i).CurrentItem
    'work with eMail

Python:

[эквивалентно, есливозможно]

Если это невозможно сделать с помощью python, есть ли какой-то другой способ, которым я могу указать отдельное электронное письмо из своего почтового ящика для кода для ссылки? В конце дня мне просто нужно вытащить какой-нибудь текст из него. Сложнее всего сказать python, в каком письме есть текст.

1 Ответ

0 голосов
/ 07 октября 2019

Неважно, какой язык программирования используется. Python может быть использован для автоматизации Outlook, а также других языков.

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

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

Возможным обходным путем является использование низкоуровневого API, на котором основан Outlook, - Extended MAPI или любой другой сторонней оболочки вокруг этого API, такой как Redemption. EWS также возможный путь. Подробнее об этом читайте в статье Начало использования веб-сервисов в Exchange .

...