チケットの送信時にチケットの内容を含む電子メールを受信者に送信し、受信者がその電子メールに返信できるようにする必要があるチケットシステムをc#で開発します。これにより、送信者は返信の電子メールを受信します。私を悩ませているのは、受信者から返信された特定のチケットをどのように追跡するのかということです。私はコードを探しているのではなく、概念やベスト プラクティスだけを探しています。
3 に答える
理論的には、 RFC 5322で説明されているように、Message-ID
を と組み合わせて使用できます。In-Reply-To
「Message-ID:」フィールドは、特定のメッセージの特定のバージョンを参照する一意のメッセージ識別子を提供します。メッセージ識別子の一意性は、それを生成するホストによって保証されます (以下を参照)。このメッセージ識別子は、機械で読み取り可能であることを意図しており、必ずしも人間にとって意味のあるものではありません。メッセージ識別子は、特定のメッセージの 1 つのバージョンにのみ関係します。その後のメッセージのリビジョンでは、それぞれ新しいメッセージ 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
別のデータベース テーブルで、フィールドと内部チケット番号の間のマッピングを追跡する必要があります。
例
yourCompany.com から新しい電子メール E1 が送信されます。
yahoo.com から返信 R1 が届きます。メッセージ ヘッダー情報:
References: <11111@yourCompany.com> Message-ID: <22222@webServer.yahoo.com> In-Reply-To: <11111@yourCompany.com>
R1 への返信 R2 が yourCompany.com から送信されます。
yahoo.com から R2 への返信 R3 を受信します。メッセージ ヘッダー情報:
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 <<< CALLID: 12312 >>>」のようなサブジェクト ヘッダーがあります。正規表現を使用すると、非常に簡単にキャッチできます
アプリケーションが理解できる特定の形式で件名にチケットを保持します。
例:Subject can be Close TICKET T1
または
Reject Resolution TICKET T1
.
メール本文に理由を明記するようお客様に依頼できます。
トリックは、あなたが理解しているフォーマット済みの件名を与えることです。