4

我将使用 c# 开发一个票务系统,该系统应在提交票证时向接收者发送包含票证内容的电子邮件,并且接收者应该能够回复该电子邮件,从而使发件人收到回复的电子邮件。令我困惑的是,我将如何跟踪接收者回复的特定票证。我不是在寻找任何代码,只是概念或最佳实践。

4

3 回答 3

6

从理论上讲,您可以将 与Message-ID结合使用In-Reply-To,如RFC 5322中所述:

Message-ID:”字段提供了一个唯一的消息标识符,它引用了特定消息的特定版本。消息标识符的唯一性由生成它的主机保证(见下文)。此消息标识符旨在为机器可读且不一定对人类有意义。消息标识符与特定消息的一个版本有关;对消息的后续修订都会收到新的消息标识符。

In-Reply-To:”和“References:”字段用于创建对消息的回复。它们保存原始消息的消息标识符和其他消息的消息标识符(例如,在对本身是回复的消息的回复的情况下)。“In-Reply-To:”字段可用于标识新消息作为回复的消息(或多个消息),而“References:”字段可用于标识对话的“线程”。

创建对消息的回复时,结果消息的“In-Reply-To:”和“References:”字段构造如下:

“In-Reply-To:”字段将包含作为回复的消息(“父消息”)的“Message-ID:”字段的内容。如果有多个父消息,则“In-Reply-To:”字段将包含所有父消息的“Message-ID:”字段的内容。如果任何父消息中没有“Message-ID:”字段,则新消息将没有“In-Reply-To:”字段。

当然,您应该Message-ID在单独的数据库表中跟踪字段和内部票号之间的映射。

例子

  1. 从 yourCompany.com 发送一封新电子邮件 E1。

  2. 收到来自 yahoo.com 的回复 R1。消息头信息:

     References:
         <11111@yourCompany.com>
     Message-ID:
         <22222@webServer.yahoo.com>
     In-Reply-To:
         <11111@yourCompany.com>
    
  3. 从 yourCompany.com 发送对 R1 的回复 R2。

  4. 从 yahoo.com 收到 R3 到 R2 的回复。消息头信息:

     References: 
         <11111@yourCompany.com>
         <22222@webServer.yahoo.com>
         <33333@yourCompany.com>
     Message-ID: 
         <44444@webServer.yahoo.com>
     In-Reply-To: 
         <33333@yourCompany.com>
    
于 2013-10-29T08:10:26.930 回答
0

我认为做到这一点的唯一方法(我从未见过有不同做法的票务系统)是将 ID 添加到主题行中。

在我们的例子中,我们有像“bla bla bla <<< CALLID: 12312 >>>”这样的主题标题。使用正则表达式,这很容易捕捉

于 2013-10-29T08:10:34.493 回答
-1

以应用程序可以理解的特定格式将票证保存在主题中。

例如Subject can be Close TICKET T1Reject Resolution TICKET T1

您可以要求客户在邮件正文中指定原因。

诀窍是提供您理解的预先格式化的主题。

于 2013-10-29T08:10:50.600 回答