2017-02-19 30 views
0

Я собрал следующий код, чтобы написать событие, когда кто-то читает их почту. Но мне нужно писать, только когда он читается в первый раз. Любые идеи о том, как достичь этого.Outlook Add In, Аудит, когда почта читается впервые

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
     { 
      inspectors = this.Application.Inspectors; 
      inspectors.NewInspector += new Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector); 
      application = new Outlook.Application(); 
      oINS = application.GetNamespace("MAPI"); 

     } 

void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) 
     { 
      currentItem = Inspector.CurrentItem as Outlook.MailItem; 
      currentItem.Read += new Outlook.ItemEvents_10_ReadEventHandler(item_read); 

     } 

void item_read() 
     { 
      WriteAudit("Item being read newly"); 
     } 

ответ

0

я заметил следующую строку кода:

application = new Outlook.Application(); 

Там нет необходимости создавать новый экземпляр приложения в обработчике Startup событий. Вместо этого вы можете использовать свойство Application класса add-in.

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

Но есть более простое решение. Обрабатывайте событие PropertyChange класса MailItem, которое запускается при изменении явного встроенного свойства (например, Subject) экземпляра родительского объекта. Вас интересует изменения в UnRead. Свойство возвращает логическое значение True, если элемент Outlook не был открыт (прочитан).

 Смежные вопросы

  • Нет связанных вопросов^_^