【发布时间】:2013-10-29 07:59:16
【问题描述】:
我将使用 c# 开发一个票务系统,该系统应在提交票证时向接收者发送包含票证内容的电子邮件,并且接收者应该能够回复该电子邮件,从而导致发件人收到回复的电子邮件.令我困惑的是,我将如何跟踪接收者回复的那张特定票。我不是在寻找任何代码,只是概念或最佳实践。
【问题讨论】:
标签: c# email ticket-system
我将使用 c# 开发一个票务系统,该系统应在提交票证时向接收者发送包含票证内容的电子邮件,并且接收者应该能够回复该电子邮件,从而导致发件人收到回复的电子邮件.令我困惑的是,我将如何跟踪接收者回复的那张特定票。我不是在寻找任何代码,只是概念或最佳实践。
【问题讨论】:
标签: c# email ticket-system
理论上,您可以将Message-ID 与In-Reply-To 结合使用,如RFC 5322 中所述:
"Message-ID:" 字段提供唯一的消息标识符, 指特定消息的特定版本。这 消息标识符的唯一性由主机保证 生成它(见下文)。此消息标识符旨在 机器可读,对人类不一定有意义。一个消息 标识符与特定消息的一个版本有关; 对消息的后续修订每次都会收到新消息 标识符。
“In-Reply-To:” 和“References:”字段在以下情况下使用 创建对消息的回复。 他们持有的消息标识符 原始消息和其他消息的消息标识符 (例如,在对本身是 回复)。 “In-Reply-To:”字段可用于识别邮件 (或消息)作为新消息的回复,而 “References:”字段可用于标识一个“线程”的 对话。
创建对消息的回复时,“In-Reply-To:”和 结果消息的“参考:”字段构造为 如下:
“In-Reply-To:”字段将包含 "Message-ID:" 回复此消息的字段( “父消息”)。如果有多个父消息,则 “In-Reply-To:”字段将包含所有父母的内容 “消息 ID:”字段。如果任何一个中没有“Message-ID:”字段 父消息,则新消息将没有“In-Reply-To:” 字段。
当然,您应该在单独的数据库表中跟踪 Message-ID 字段和您的内部票号之间的映射。
示例
一封新的电子邮件 E1 从 yourCompany.com 发送。
收到来自 yahoo.com 的回复 R1。消息头信息:
References:
<11111@yourCompany.com>
Message-ID:
<22222@webServer.yahoo.com>
In-Reply-To:
<11111@yourCompany.com>
从 yourCompany.com 向 R1 发送 R2 回复。
从 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>
【讨论】:
我认为做到这一点的唯一方法(而且我从未见过有不同做法的票务系统)是将 ID 添加到主题行中。
在我们的例子中,我们有像“bla bla bla >>”这样的主题标题。 使用正则表达式,这很容易掌握
【讨论】:
以应用程序可以理解的特定格式将票证保存在主题中。
例如Subject can be Close TICKET T1 或
Reject Resolution TICKET T1.
您可以要求客户在邮件正文中说明原因。
诀窍是提供您理解的预先格式化的主题。
【讨论】: