Wir haben eine interne .NET Case Management-Anwendung, die automatisch einen neuen Fall aus einer E-Mail erstellt. Ich möchte andere E-Mails identifizieren können, die sich auf die ursprüngliche E-Mail beziehen, um zu verhindern, dass doppelte Fälle erstellt werden.
Ich habe beobachtet, dass viele, aber nicht alle E-Mails einen Thread-Index-Header haben, der nützlich aussieht.
Kennt jemand einen einfachen Algorithmus oder ein Paket, das wir verwenden könnten?
Soweit ich weiß, wird es keine hundertprozentig sichere Lösung geben, da nicht alle E-Mail-Clients oder Gateways alle Header beibehalten oder respektieren.
Sie erhalten jedoch eine ziemlich hohe Trefferquote mit folgendem:
Jede E-Mail-Nachricht sollte ein eindeutiges "Message-ID" -Feld haben. Finde dies und halte es als Teil des Falles fest. (Siehe RFC-822 )
Wenn Sie zwei Nachrichten mit derselben Nachrichten-ID erhalten, verwerfen Sie die zweite, da es sich um ein Duplikat handelt.
Überprüfen Sie das Feld "In-Reply-To", wenn die angezeigte ID mit einer bekannten Nachrichten-ID übereinstimmt, dann wissen Sie, dass die E-Mail verwandt ist.
Die Header "References" und "Original-Message-ID" haben ähnliche Bedeutungen.
Wenn Ihr System jemals E-Mails generiert, fügen Sie eine CaseID # in die Betreffzeile ein, so dass Sie danach suchen können, wenn Sie eine E-Mail erhalten haben (zB: [Case # 20081114-01]); Die meisten Leute bearbeiten Betreffzeilen nicht, wenn sie antworten.
Die Internetstandards RFC-822 , RFC-2076 und RFC-4021 kann nützlich sein, weiter zu lesen.
Da es immer Meldungen geben wird, die (aus welchen Gründen auch immer) übersehen werden, möchten Sie wahrscheinlich auch verwandte Funktionen in Ihrem Fallverwaltungssystem, z. B. "Schließen als doppelter Fall" oder "Zusammenführen mit doppeltem Fall" mit Werkzeugen, die es einfacher machen, Duplikate zu finden.
Tags und Links email pattern-matching email-integration