Outlook加载项 - 用于电子邮件跟踪的自定义标头

时间:2011-01-05 16:54:00

标签: c# .net email outlook exchange-server

我们在C#中编写了一个Outlook加载项,它将自定义标头附加到外发邮件中。

此加载项必须使用名为Redemption的库来绕过Outlook的安全性来修改标题,这一切都很有效。

我们的问题在于通过Exchange服务器发送外发邮件。我们使用附加标题:

  • 添加引用标头,其中包含一个电子邮件地址,其中包含用于跟踪我们系统的ID。
  • 这是一个标准的电子邮件标题,所有邮件客户端在回复邮件时都应该传递。因此,回复邮件将自动跟踪新邮件。

如果您从Outlook中的IMAP帐户设置发送电子邮件(例如GMail),所有这一切都可以正常工作。

问题是,如果您通过Exchange帐户发送邮件,Exchange服务器将覆盖引用标头并使用它自己的专有标头: Thread-Index 线程主题。电子邮件标准建议使用引用 In-Reply-To 标头。有关此问题,请参阅此link

有没有人知道解决这个问题的方法?一些算法来获得以下内容:

  • 向包含10位数字ID和3个字母前缀的电子邮件添加标题(任何名称或种类)
  • 从所有(或大多数)邮件客户端回复此电子邮件会保留自定义标题

1 个答案:

答案 0 :(得分:0)

我认为以下算法将解决我们的问题:

  • 我们的Outlook加载项将设置引用和任意X-header
  • 我们的邮件过滤器会查找引用,如果找到则使用它(如果外发邮件服务器是Exchange,则不会出现)
  • 如果我们的邮件过滤器找到任意X-header和Thread-Index,它将存储在X-header中找到的数据。
  • 稍后,如果电子邮件被多次回复,邮件过滤器将使用主题索引查找过去的信息以跟踪电子邮件。

对于那些想要了解Thread-Index标头内部的人来说,它是一个Base64编码的字符串。前22个字节是原始的唯一部分,每个回复都会增加5个字节。我们只使用前22个字节来识别电子邮件。