我已经将以下代码放在一起,以便在有人读取邮件时编写事件。但我只有在第一次阅读时才需要写。关于如何实现这一点的任何想法。
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 :(得分:0)
我注意到以下代码行:
application = new Outlook.Application();
无需在Startup
事件处理程序中创建新的Application实例。相反,您可以使用加载项类的Application属性。
在这种情况下,您需要保留未读项目ID列表,以检查邮件项目是否先前打开过。
但是有一个更简单的解决方案。处理在更改父对象实例的显式内置属性(例如,Subject)时触发的MailItem类的PropertyChange事件。您对UnRead属性更改感兴趣。如果尚未打开(读取)Outlook项,则该属性返回一个为True的布尔值。