为工单实现“通过电子邮件回复”的功能

4
我将使用C#开发一套票务系统,该系统应在提交工单后向接收者发送包含工单内容的电子邮件,并且接收者应能够回复该电子邮件,从而导致发件人收到回复的电子邮件。让我困惑的是如何跟踪接收者回复的特定工单。我不需要代码,只需要概念或最佳实践。
3个回答

7
理论上,您可以使用与RFC 5322中描述的In-Reply-To一起使用Message-ID
“消息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. A new email E1 is sent from yourCompany.com.

  2. A reply R1 is received from yahoo.com. The message header information:

     References:
         <11111@yourCompany.com>
     Message-ID:
         <22222@webServer.yahoo.com>
     In-Reply-To:
         <11111@yourCompany.com>
    
  3. A reply R2 to R1 is sent from yourCompany.com.

  4. A reply R3 to R2 is received from yahoo.com. The message header information:

     References: 
         <11111@yourCompany.com>
         <22222@webServer.yahoo.com>
         <33333@yourCompany.com>
     Message-ID: 
         <44444@webServer.yahoo.com>
     In-Reply-To: 
         <33333@yourCompany.com>
    

通常,对投票降低评分的原因是建设性的。 - Alex Filipovici
1
嗨,Alex,我没有对你进行负面评价,我给你点了赞,你的解决方案很有道理。非常感谢 :) - arash moeen
Alex,我想不通的是,当我的工单创建并发送第一条消息时,邮件会被发送。我尝试添加一个X-tkt-Id作为自定义标头,但似乎大多数服务器都会忽略自定义标头,而且可能很有趣的是,我使用的邮件服务器不会将这些已发送的电子邮件存储在已发送箱中。所以基本上我无法获取第一封电子邮件的消息ID...也许我在这里漏掉了什么。你能帮忙吗?谢谢。 - arash moeen
再次感谢Alex的回答,虽然我也在考虑同样的事情,但你的回答为我澄清了一些问题。不过,我必须找到一种方法,通过消息ID获取第一封电子邮件,因为由于某种原因,这个邮件服务器不会存储通过我的应用程序发送的电子邮件。 - arash moeen

0

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

在我们的情况下,我们有像“bla bla bla <<< CALLID: 12312 >>>”这样的主题头。使用正则表达式很容易捕获它们。


-1

在特定的格式中保留工单主题,以便应用程序能够理解。

例如:主题可以是关闭工单T1拒绝解决方案工单T1

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

关键是提供您能够理解的预格式化主题。


那么用户可以在主题中编辑票据ID,以回复其他用户的任何先前的票据? :) - Apollo Data

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接