Как я могу найти ID события для входящего email?

Вопрос или проблема

Я ищу способ создать Python-скрипт, который будет запускаться каждый раз, когда приходит новое письмо. В Planificateur de tâches Windows я могу настроить триггер для “При событии”, используя журнал приложений и “Outlook” в качестве источника. Однако я не знаю, какой ID события соответствует новому входящему письму. Я долго искал в Google и ничего не нашел, вероятно, потому что не знаю правильных поисковых слов. Возможно, кто-то здесь знает, где искать, а лучше всего – знает ответ прямо?

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

ИСПРАВЛЕНИЕ: Я предполагаю, что существует один единственный ID события, который создается, когда приходит электронное письмо. Этот ID (или место, где его найти) – то, что я ищу. Если это не так, и нет единого ID, соответствующего входящему электронному письму, любая идея, которую вы сможете придумать, была бы замечательной

ИСПРАВЛЕНИЕ: Чтобы избежать проблемы XY, главная цель здесь – выяснить способ запуска python-скрипта при получении электронного письма.

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

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

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

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

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

expression .NewMailEx(EntryIDCollection)

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

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

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

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

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

    Outlook требует, чтобы вы указывали прямую ссылку на исполняемый файл и не позволит вам указать аргументы. Поэтому вам нужно будет создать небольшой файл批处理 для запуска вашего Python-скрипта и указать Outlook на этот файл.

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

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

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

Верно,

Я полагаю, что вы можете создать правило, как указал @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

Дайте знать, как это прошло.

Ответ или решение

Для того чтобы настроить выполнение Python-скрипта при получении нового электронного письма в Outlook на Windows 7 (64-bit) с установленным Outlook 2010, следует учесть несколько важных моментов. Ваша задача заключается в автоматизации определенных процессов, таких как получение уведомлений о доставке и чтении писем, а также архивирование электронных писем.

Проблема с идентификатором события (Event ID)

К сожалению, Outlook не создает событие с фиксированным идентификатором (Event ID), которое можно было бы использовать в Планировщике задач Windows для запуска Python-скрипта при получении нового электронного письма. Outlook не ведет учет событий полученных писем в журнале событий Windows. Это означает, что для вашей задачи вам нужно будет использовать другой подход.

Решение через правила Outlook

Наиболее надежный способ автоматизации запуска Python-скрипта при входящем email — это использование встроенных правил Outlook. Вот как это можно сделать:

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

    • Перейдите в меню "Файл" > "Управление правилами и оповещениями".
    • Нажмите на "Создать правило".
  2. Настройте правило для применения ко всем входящим письмам.

    • Выберите параметр "Применить правило к сообщениям, которые я получаю".
    • На следующем шаге не устанавливайте никаких условий и подтвердите, что правило будет применяться ко всем полученным сообщениям.
  3. Задайте действие для запуска программы.

    • Выберите действие "Запустить программу".
    • Вам нужно будет указать путь к небольшому batch-файлу, который будет запускать ваш Python-скрипт.
  4. Создайте batch-файл.

    • Создайте файл с расширением .bat и добавьте в него строки, чтобы он запускал ваш Python-скрипт. Пример кода для batch-файла:
      @echo off
      python C:\path\to\your_script.py
    • Убедитесь, что на вашем компьютере установлен Python и указан правильный путь к нему в переменной окружения.
  5. Настройте исключения (если необходимо) и завершите настройку правила.

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

Альтернативное решение: Использование библиотеки win32com

Если вы хотите более гибкое решение, вы можете использовать библиотеку win32com для взаимодействия с Outlook прямо из вашего скрипта. Пример кода, который будет отслеживать новые сообщения:

import win32com.client

def main():
    outlook = win32com.client.Dispatch("Outlook.Application")
    inbox = outlook.GetNamespace("MAPI").GetDefaultFolder(6)  # 6 - это Inbox
    messages = inbox.Items

    # Подсчет незачитанных сообщений
    for message in messages:
        if message.UnRead:
            print(f"Новое сообщение от: {message.SenderName}, Тема: {message.Subject}")
            message.UnRead = False  # Отметить сообщение как прочитанное

if __name__ == "__main__":
    main()

Этот код запустится в цикле при каждом выполнении вашего скрипта, и если будут найдены новые сообщения, вы сможете обрабатывать их по своему усмотрению.

Заключение

Хотя Outlook не предоставляет идентификатор события для полученных писем, вы можете воспользоваться встроенными правилами для автоматизации ваших процессов или использовать библиотеку win32com для программного доступа к входящим сообщениям. Это поможет вам достигнуть поставленных целей по автоматизации и хранению записей. Сделав правильный выбор инструментов и подходов, вы сможете эффективно организовать обработку электронных писем в вашем офисе.

Оцените материал
Добавить комментарий

Капча загружается...