Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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# Microsoft加载项在共享文件夹中添加重复邮件_C#_Email_Outlook_Outlook Addin - Fatal编程技术网

C# Microsoft加载项在共享文件夹中添加重复邮件

C# Microsoft加载项在共享文件夹中添加重复邮件,c#,email,outlook,outlook-addin,C#,Email,Outlook,Outlook Addin,我开发了一个Outlook插件,它可以过滤邮件,如果邮件符合某些标准,它会将邮件移动到邮件列表下的共享文件夹中 对于一个人来说,它可以正常工作,但是当我将它添加到邮件列表中的另一个人时,它会再次将传入的邮件移动到共享文件夹中。所以,我面临重复的邮件 是否有任何方法或策略来防止在第一次之后添加相同的邮件或替换相同的邮件 我知道同一封邮件并不清楚,它可以通过多种组合来定义,如相同的描述、相同的正文、相同的时间、相同的描述等。提前谢谢你。你不可能可靠 为了使其正常工作,当您移动电子邮件时,您可以将原始

我开发了一个Outlook插件,它可以过滤邮件,如果邮件符合某些标准,它会将邮件移动到邮件列表下的共享文件夹中

对于一个人来说,它可以正常工作,但是当我将它添加到邮件列表中的另一个人时,它会再次将传入的邮件移动到共享文件夹中。所以,我面临重复的邮件

是否有任何方法或策略来防止在第一次之后添加相同的邮件或替换相同的邮件

我知道同一封邮件并不清楚,它可以通过多种组合来定义,如相同的描述、相同的正文、相同的时间、相同的描述等。提前谢谢你。

你不可能可靠

为了使其正常工作,当您移动电子邮件时,您可以将原始邮件id存储到您在目标文件夹中创建的新电子邮件的自定义标记字段中。当您移动电子邮件时,您实际上创建了具有相同内容的新电子邮件,但邮件id将不同。然后,在将邮件保存到目标文件夹之前,在目标文件夹中搜索具有与原始邮件id匹配的自定义标记的邮件

这种方法不会100%奏效。当同时为多个用户工作的外接程序感知到新消息并且所有外接程序开始处理该消息时,仍然存在竞争条件。即使使用自定义标记,也有可能两个外接程序在目标文件夹中搜索邮件,但都没有找到,然后都将其存储


为了使其更加可靠,您的外接程序还可以定期清理目标文件夹中与此自定义标记重复的邮件。

这是一种非常好的方法,但正如您所提到的,它可能会丢失一些案例。无论如何,谢谢你,尼克!