Как найти идентификатор события для входящего электронного письма?


1

Я пытаюсь создать скрипт на Python, который запускается при получении письма. В планировщике заданий Windows я могу настроить триггер «На событие», используя журнал приложений и «Outlook» в качестве источника. Однако я не знаю, что такое идентификатор события для нового входящего письма. Я гуглил некоторое время и не нашел ничего вероятного, потому что я не знаю правильных условий поиска. Возможно, кто-то здесь знает, где искать, или еще лучше, ответ прямо?

Не уверен, что это имеет значение, но я использую 64-разрядную версию Windows 7 с Outlook 2010. Заранее спасибо

РЕДАКТИРОВАТЬ: Я предполагаю, что существует один единственный идентификатор события, который генерируется при получении электронной почты. Этот идентификатор (или где его найти) - это то, что я ищу. Если это не так, и нет единого идентификатора, который соответствует входящему письму, то любая работа, о которой вы можете подумать, будет хорошей.

РЕДАКТИРОВАТЬ: Чтобы избежать проблемы XY, цель здесь состоит в том, чтобы найти способ запустить скрипт Python при получении электронной почты.

Еще, надеюсь, лучше, Edit: Есть две основные вещи, которые я пытаюсь сделать:

У меня есть скрипт Python, который обрабатывает форму, которую использует весь мой офис (~ 30 человек). Эта форма отправляет электронные письма различным людям в офисе. Было бы неплохо, если бы он не просто слепо отправлял электронные письма в эфир, а скорее получал отзывы. Такие вещи, как подтверждение того, что электронная почта была правильно отправлена, а затем прочитана. Это цель 1.

Цель 2 немного проще. Благодаря замечательным правилам в моей отрасли, мы должны вести безумное количество записей для определенных проектов. Это включает в себя электронные письма. Поэтому я хотел бы настроить список клиентов / проектов, которые нуждаются в такой обработке, чтобы при получении таких электронных писем они могли автоматически сохраняться (вероятно, в формате PDF) или распечатываться.

Надеюсь, это поможет


Я думаю, что вы должны иметь возможность настроить правило в Outlook, чтобы при получении сообщения электронной почты запускался сценарий. Я не уверен на 100%, какие сценарии вы можете запустить (я полагаю, вы, вероятно, ограничены VB), но вы, вероятно, можете создать сценарий, который записывает пользовательское событие в журнал. Возможно, вы даже сможете создать скрипт, который напрямую взаимодействует с вашим скриптом Python.
Miles Hayler

Хотя мастер правил называет пользовательский код «сценарием», его необходимо создавать в Outlook Visual Basic для приложений, а не в Microsoft Visual Basic Scripting Edition (VBScript) или других языках сценариев, таких как Microsoft JScript. Кроме того, Outlook Visual Basic для приложений не предназначен для развертывания, поэтому развертывание этого пользовательского кода требует ручной настройки на компьютере каждого пользователя. Источник: support.microsoft.com/kb/306108
Miles Hayler

1
Ну, возможно, вы можете справиться с этим через макрос VBA в самом Outlook. VBA также может многое делать вне домена своего родительского приложения. Почему вы специально ищете внешний скрипт?
tumchaaditya

1
Для каждого письма определенно есть идентификатор, очень длинная строка, написанная в разных форматах. Это не имеет ничего общего с идентификатором события из журналов просмотра событий. Какой у вас почтовый сервер, сервер Exchange? Вы смотрели на его API? Покажите некоторые вещи, которые вы пробовали, какую информацию вам удалось получить? Сложность также может заключаться в том, чтобы различать новые / измененные события.
Jan Doggen

1
Если форма отправляет электронные письма внутри вашей компании, то зачем даже предполагать, что она не была доставлена? В любом случае, если это было бы наиболее оптимально проверено на вашем почтовом сервере обмена, который знает, когда он помещает электронную почту в почтовый ящик пользователя. По моему мнению, решения в отношении архивирования электронной почты также лучше всего будут реализованы на сервере обмена почтой.
Der Hochstapler

Ответы:


0

Это краткое описание того, что может вам помочь. Не совсем уверен, что вы можете получить доступ к этому событию из python, похоже, это может быть функция .net. Надеюсь, он отправит вас по правильному пути.

выражение .NewMailEx (EntryIDCollection)


Извините, я думаю, что я немного неясен, я не пытаюсь понять это через Python, я просто хочу дать значение планировщику задач
wnnmaw

0

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

  1. Создайте новое правило в Outlook.

  2. Создайте правило без использования шаблона и выберите, что правило должно применяться к сообщениям, получено ,

  3. На следующем шаге вы должны установить условия для правила, не предлагать никаких и нажать Далее.
    Вас спросят, уверены ли вы, что не хотите устанавливать какие-либо условия, подтвердите

  4. Теперь вы можете выбрать действия для выполнения. Вы должны выбрать, что вы хотите запустить приложение. Затем нажмите приложение ссылка в нижней панели.

    Outlook хочет, чтобы вы указывали прямо на исполняемый файл, и не позволяет указывать аргументы. Итак, вы захотите создать небольшой командный файл, чтобы запустить скрипт Python и указать Outlook на этот командный файл.

  5. Установите любые исключения, если они вам нужны, затем перейдите к последнему шагу.

  6. Теперь назовите свое правило и сохраните его. Теперь он будет вызывать ваш скрипт Python каждый раз, когда вы получаете электронное письмо.

Кстати, для полученных писем нет идентификатора события. Чтобы найти идентификатор события, просто проверьте журнал приложений в окне просмотра событий. Outlook не записывает полученные сообщения в журнал событий.


Есть ли способ, которым я могу сделать это из командной строки? Это позволило бы мне раздать пакетный файл всем в офисе
wnnmaw

@wnnmaw You Можно программно создавать правила Outlook Но я никогда этого не делал.
Der Hochstapler

Это было преимущество общего планировщика задач, я могу получить от него cmd,
wnnmaw

Кстати, если вы пытаетесь запустить скрипт Python для каждого полученного письма на каждой рабочей станции сотрудников компании, то это, вероятно, все еще проблема XY;)
Der Hochstapler

1
@wnnmaw Потому что запуск скрипта Python при получении письма не ваша проблема. Ваша проблема, вероятно, та, которую вы пытаетесь решить с помощью скрипта Python.
Der Hochstapler

0

Правильно,

Я верю, что вы можете создать правило @oliverSlazburg, которое запускает пакетный файл

В командном файле вы можете использовать следующий синтаксис для записи события непосредственно в журналы событий:

eventcreate [/s Computer [/u Domain\User [/p Password]] {[/l {APPLICATION|SYSTEM}]|[/so SrcName]} /t {ERROR|WARNING|INFORMATION|SUCCESSAUDIT|FAILUREAUDIT} /id EventID /d Description

согласно http://technet.microsoft.com/en-us/library/bb490899.aspx

Дайте мне знать, как это происходит.


Ну, я получил где-то. Вот моя команда (с некоторыми опущенными битами): eventcreate /s myIP /u myDomain\myUsername /p myPassword /l APPLICATION /so Outlook /t INFORMATION /id 999 /d "Custom event", И вот результат: Custom event"\n WARNING: Passing the user credential for local connection.\n ERROR: Source parameter is used to identify custom applications/scripts only (not installed applications).
wnnmaw

Я полагаю, вы используете учетную запись администратора для этого? UAC отключен?
Miles Hayler

Да, у меня есть учетная запись администратора. Что вы подразумеваете под "UAC"?
wnnmaw

Контроль учетной записи пользователя. Всплывающие окна, которые появляются, когда требуется действие администратора. Я знаю, что это может вызвать проблемы время от времени.
Miles Hayler

На самом деле, при повторном взгляде на результат может возникнуть проблема с созданием пользовательского события с использованием имени установленного приложения. попробуйте изменить /so в Outlook0 или что-то подобное.
Miles Hayler
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.