Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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# 如何在不使用邮件正文的情况下比较电子邮件?_C#_Office Interop_Outlook Addin_Outlook Redemption_Addin Express - Fatal编程技术网

C# 如何在不使用邮件正文的情况下比较电子邮件?

C# 如何在不使用邮件正文的情况下比较电子邮件?,c#,office-interop,outlook-addin,outlook-redemption,addin-express,C#,Office Interop,Outlook Addin,Outlook Redemption,Addin Express,如何在不使用邮件正文的情况下比较电子邮件 例如: 约翰给玛丽发了一封信,并把这封信“保存”在我的附件中 两者都有相同的addin 当Mary收到消息时,必须对该消息进行分类,因为John已经“保存”了该消息 如何在不使用邮件正文的情况下确定Mary收到的邮件与John发送的邮件(“保存”)相同 目前,这项工作如下所示,使用以下信息生成哈希: 寄件人 收件人 主题 消息正文文本 此散列存储在数据库中,当Mary的Outlook触发新邮件事件时,将生成一个具有相同信息的散列,并在数据库中进

如何在不使用邮件正文的情况下比较电子邮件

例如:

  • 约翰给玛丽发了一封信,并把这封信“保存”在我的附件中
  • 两者都有相同的addin
  • 当Mary收到消息时,必须对该消息进行分类,因为John已经“保存”了该消息

如何在不使用邮件正文的情况下确定Mary收到的邮件与John发送的邮件(“保存”)相同

目前,这项工作如下所示,使用以下信息生成哈希:

  • 寄件人
  • 收件人
  • 主题
  • 消息正文文本
此散列存储在数据库中,当Mary的Outlook触发新邮件事件时,将生成一个具有相同信息的散列,并在数据库中进行比较,以查看是否应对其进行分类

问题在于,根据消息的正文大小,它不是执行的,通过MailItem.body属性获取消息正文需要很长时间

不使用消息体的目的仅仅是为了提高性能

public string GetAssinatura(Outlook.MailItem email)
    {
        try
        {

            string corpoEmail = email.Body;//this is not performatic with big messages

            var hash = GenerateHash(corpoEmail); 
        }
    }
对话参与者可以回复或转发邮件,因此Outlook和大多数最常用的电子邮件客户端会将主题更改为默认主题,例如Re:subject。 因此,不可能只有参与者和主题的散列。

使用属性:

MailItem.SentOn

有可能生成那个散列。发件人Outlook仅在发送邮件后才具有该信息。因此,当在item\u Send文件夹中添加一个新项目时,代码必须运行。

我假设发件人+收件人+主题还不够。@KennethGarza不是,我的例子是一个坏例子,更像是,如果邮件从a公司的人发送到B公司的人,两者都有相同的加载项(数据库),我需要确定这种情况。。如果使用发件人+收件人+主题,两封信息相同的邮件将返回相同的哈希值…我怀疑是这样的。。。似乎什么都想不出来。我建议发布一个代码示例,说明什么是未执行的。对于您试图获取的内容,可能还有其他选项。发件人/收件人/主题不够唯一。我认为你不能避免使用Body。嗨@DmitryStreblechenko,这是不够的,因为在回复和转发邮件时,Outlook总是将主题更改为相同的模式。例:RE:主题。在这些情况下,散列将与另一个散列相同,我的应用程序认为消息已经存储。我需要的东西,我可以从发件人和收件人都得到。