Запустить метод, если новое письмо Outlook получено в C# - PullRequest
2 голосов
/ 26 мая 2020

У меня небольшая проблема. Боюсь, я не знаю, с чего и как начать.

Мой проект: когда у меня в почтовом ящике Outlook появляется новое электронное письмо с темой «НАЧАТЬ», я хочу выполнить метод.

В следующей структуре:

public void EmailNotification()
{
    if (/* Check every 5 minutes as long as application is running for new mails in Outlook*/ || /* 
        subject contains the string "start" */){
             AnyMethod();
    }
}

public void AnyMethod()
{
    // Do somethink
}

Надеюсь, моя проблема ясно объяснена. Я все еще относительный новичок в C# и рад любой помощи.

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

1 Ответ

2 голосов
/ 26 мая 2020

Вам необходимо обработать событие NewMailEx класса Application из объектной модели Outlook. Это событие запускается один раз для каждого полученного элемента, обрабатываемого Microsoft Outlook. Элемент может относиться к одному из нескольких типов элементов, например, MailItem, MeetingItem или SharingItem. Строка EntryIDsCollection содержит идентификатор записи, соответствующий этому элементу.

Событие NewMailEx срабатывает, когда новое сообщение поступает в папку «Входящие» и до того, как выполняется обработка правил клиента. Вы можете использовать идентификатор записи, возвращенный в строке EntryIDCollection, для вызова метода NameSpace.GetItemFromID и обработки элемента.

void Application_NewMailEx(string EntryIDCollection)
    {    
        Outlook.MailItem newMail = (Outlook.MailItem) Application.Session.GetItemFromID(EntryIDCollection, System.Reflection.Missing.Value);

        // do whatever you want with the new email...
    }

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

...