为票证实施"通过电子邮件回复"

ara*_*een 4 c# email ticket-system

我将开发一个带有c#的票务系统,它应该在提交票证时向接收者发送包含票证内容的电子邮件,并且接收者应该能够回复该电子邮件,这导致发件人收到回复的电子邮件.让我感到困惑的是,我将如何跟踪接收方回复的特定机票.我不是在寻找任何代码,只是概念或最佳实践.

Ale*_*ici 6

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

"消息ID:"字段提供了指特定消息的特定版本的唯一消息标识符.消息标识符的唯一性由生成它的主机保证(见下文).该消息标识符旨在是机器可读的,并且不一定对人类有意义.消息标识符恰好与特定消息的一个版本有关; 对消息的后续修订每个都接收新的消息标识符.

"在-回复:"和"参考文献:"字段创建一个消息的答复时使用.它们保存原始消息的消息标识符和其他消息的消息标识符(例如,在回复本身是回复的消息的情况下)."In-Reply-To:"字段可以用于标识新消息作为回复的消息(或多个消息),而"References:"字段可以用于标识会话的"线程".

创建对邮件的回复时,结果邮件的"In-Reply-To:"和"References:"字段构造如下:

"In-Reply-To:"字段将包含该消息的"消息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>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 来自yourCompany.com的回复R2到R1.
  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>
    
    Run Code Online (Sandbox Code Playgroud)