C # Outlook Удалить событие при успешной отправке электронной почты? - PullRequest
0 голосов
/ 27 мая 2018

У меня есть внешний вид плагина, я создаю событие, когда электронное письмо успешно отправлено, этот код:

private Outlook.Items _items;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
    Outlook.Application application = this.Application;
    _items = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail).Items;
    _items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd);
}

Затем у меня есть настройки пользователя, и если пользователь не выбирает, я хочуудалить это событие (Items_ItemAdd).

Так что мне делать?

1 Ответ

0 голосов
/ 27 мая 2018

Ну, отслеживание папки Sent Items не очень хорошая идея.Outlook позволяет удалить отправленный элемент, пропустив папку Sent Items.Свойство DeleteAfterSubmit элементов Outlook представляет собой логическое значение, которое равно True, если копия почтового сообщения не сохранена при отправке, и False, если копия сохраняется в папке «Отправленные».Таким образом, вы никогда не получите событие, если пользователи или другое программное обеспечение, такое как макросы VBA или надстройки, установили это свойство перед отправкой электронной почты.

Лучший способ - обработать событие ItemSend Приложение, которое запускается при получении нового элемента в папке «Входящие».

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

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

В обработчике событий NewMailEx вы можете спросить пользователей, обрабатывать ли письма послеотправка и, если это не так, вы можете просто установить для свойства DeleteAfterSubmit значение true.

...