我将开发一个带有c#的票务系统,它应该在提交票证时向接收者发送包含票证内容的电子邮件,并且接收者应该能够回复该电子邮件,这导致发件人收到回复的电子邮件。让我感到困惑的是,我将如何跟踪接收方回复的特定机票。我不是在寻找任何代码,只是概念或最佳实践。
答案 0 :(得分:6)
理论上,您可以将Message-ID
与In-Reply-To
结合使用,如RFC 5322中所述:
“Message-ID:”字段提供唯一的消息标识符 指特定消息的特定版本。该 消息标识符的唯一性由主机保证 生成它(见下文)。此消息标识符旨在 机器可读并且不一定对人类有意义。一个消息 标识符恰好与特定消息的一个版本有关; 对消息的后续修订每个都接收新消息 标识符
“In-Reply-To:”和“引用:”字段用于 创建对邮件的回复。 他们拥有的消息标识符 原始邮件和其他邮件的邮件标识符 (例如,在回复本身是一个消息的情况下 答复)。 “In-Reply-To:”字段可用于标识消息 (或消息)新消息是回复,而 “引用:”字段可用于标识“线程” 会话。
创建对邮件的回复时,“In-Reply-To:”和 “引用:”结果消息的字段构造为 如下:
“In-Reply-To:”字段将包含该内容 消息的“消息ID:”字段,这是一个回复( “父母留言”)。如果有多个父消息,那么 “In-Reply-To:”字段将包含所有父母的内容 “消息ID:”字段。如果任何一个中没有“Message-ID:”字段 父消息,然后新消息将没有“In-Reply-To:” 字段。
当然,您应该在单独的数据库表中跟踪Message-ID
字段与内部票证号之间的映射。
示例强>
从yahoo.com收到回复R1。邮件标题信息:
References:
<11111@yourCompany.com>
Message-ID:
<22222@webServer.yahoo.com>
In-Reply-To:
<11111@yourCompany.com>
从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>
答案 1 :(得分:0)
我认为实现这一目标的唯一方法(我从未见过以不同方式执行此操作的票务系统)将ID添加到主题行中。
在我们的案例中,我们有像“bla bla bla&lt;&lt;&lt;&lt; CALLID:12312&gt;&gt;&gt;”这样的主题标题。 使用正则表达式,这很容易捕获
答案 2 :(得分:-1)
将票证保留在应用程序可以理解的特定格式的主题中。
e.g。 Subject can be Close TICKET T1
或
Reject Resolution TICKET T1
。
您可以要求客户在邮件正文中指明原因。
诀窍是给出你理解的预先格式化的主题。