Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#加载项中Outlook接收电子邮件的触发事件_C#_Email_Outlook_Outlook Addin - Fatal编程技术网

C#加载项中Outlook接收电子邮件的触发事件

C#加载项中Outlook接收电子邮件的触发事件,c#,email,outlook,outlook-addin,C#,Email,Outlook,Outlook Addin,我正在想一个办法,当收件箱中出现电子邮件时,触发一个事件。默认文件夹没有问题,但需要确保它对所有帐户都这样做。这是我的密码: outlookNameSpace=this.Application.GetNamespace(“MAPI”); foreach(outlookNameSpace.Folders中的MAPIFolder文件夹){ 获取文件夹(文件夹); } 作废GetFolders(MAPIFolder文件夹){ 如果(folder.Folders.Count==0){ //这将遍历所有文

我正在想一个办法,当收件箱中出现电子邮件时,触发一个事件。默认文件夹没有问题,但需要确保它对所有帐户都这样做。这是我的密码:

outlookNameSpace=this.Application.GetNamespace(“MAPI”);
foreach(outlookNameSpace.Folders中的MAPIFolder文件夹){
获取文件夹(文件夹);
}
作废GetFolders(MAPIFolder文件夹){
如果(folder.Folders.Count==0){
//这将遍历所有文件夹,但它应该检查它是否是带有
//新电子邮件和than触发器ItemsEvents\u itemsaddeventhandler
items.ItemAdd+=
新Outlook.ItemsEvents\u ItemAddEventHandler(items\u ItemAdd);
}否则{
foreach(文件夹.Folders中的MAPIFolder子文件夹){
GetFolders(子文件夹);
}
}
}
当新邮件到达收件箱时,在客户端规则处理发生之前,将触发该事件。您可以使用EntryIDCollection数组中返回的条目ID来调用该方法并处理该项。请谨慎使用此方法,以尽量减少对Outlook性能的影响。但是,根据客户端计算机上的设置,在新邮件到达收件箱后,垃圾邮件过滤和将新邮件从收件箱移动到另一个文件夹的客户端规则等过程可能会异步进行


此事件对Microsoft Outlook处理的每个接收项目激发一次。项目可以是几种不同的项目类型之一,例如,
邮件项目
会议项目
,或
共享项目
entryidscolection
字符串包含对应于该项的条目ID。

我认为解决传入消息操作的最佳方法是以下代码:

currentExplorer = this.Application.ActiveExplorer();
currentExplorer.SelectionChange += new Outlook.ExplorerEvents_10_SelectionChangeEventHandler (CurrentExplorer_Event);


我在docs.microsoft.com上找到了一篇关于这方面的好文章:--这篇文章演示了“当用户收到电子邮件时的自定义操作”。这只适用于默认文件夹,而不适用于所有帐户。。。