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

时间:2018-09-11 19:06:24

标签: c# office-interop outlook-addin outlook-redemption addin-express

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

例如:

  • John向玛丽发送了一条消息,并将此消息“保存”在我的插件中。
  • 两者都有相同的插件。
  • 当Mary收到该消息时,由于John已经“保存”了该消息,因此必须对该消息进行分类。

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

当前,它的工作方式如下,使用以下信息创建HASH:

  • 发件人
  • 收件人
  • 主题
  • 邮件正文文本

此哈希存储在数据库中,当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。 因此,不可能仅散列参与者和主题。

1 个答案:

答案 0 :(得分:2)

使用属性:

MailItem.SentOn

有可能生成该哈希。发送邮件的Outlook仅在发送邮件后才具有该信息。因此,当在Item_Send文件夹中添加新项目时,代码必须运行。