Prima di tutto, questo è un compito complicato.
È necessario raccogliere le risposte tipiche da diversi client di posta elettronica e preparare espressioni regolari corrette (o qualsiasi altra cosa) per analizzarle. Ho raccolto risposte da outlook, thunderbird, gmail, apple mail e mail.ru.
Sto usando espressioni regolari per analizzare la risposta nel modo seguente: se l'espressione non corrisponde, provo a usare quella successiva.
new Regex("From:\\s*" + Regex.Escape(_mail), RegexOptions.IgnoreCase)
new Regex("<" + Regex.Escape(_mail) + ">", RegexOptions.IgnoreCase)
new Regex(Regex.Escape(_mail) + "\\s+wrote:", RegexOptions.IgnoreCase)
new Regex("\\n.*On.*(\\r\\n)?wrote:\\r\\n", RegexOptions.IgnoreCase | RegexOptions.Multiline)
new Regex("-+original\\s+message-+\\s*$", RegexOptions.IgnoreCase)
new Regex("from:\\s*$", RegexOptions.IgnoreCase)
Per rimuovere la citazione alla fine:
new Regex("^>.*$", RegexOptions.IgnoreCase | RegexOptions.Multiline);
Ecco la mia piccola raccolta di risposte ai test (campioni divisi per --- ):
From: test@test.com [mailto:test@test.com]
Sent: Tuesday, January 13, 2009 1:27 PM
----
2008/12/26 <test@test.com>
> text
----
test@test.com wrote:
> text
----
test@test.com wrote: text
text
----
2009/1/13 <test@test.com>
> text
----
test@test.com wrote: text
text
----
2009/1/13 <test@test.com>
> text
> text
----
2009/1/13 <test@test.com>
> text
> text
----
test@test.com wrote:
> text
> text
<response here>
----
--- On Fri, 23/1/09, test@test.com <test@test.com> wrote:
> text
> text
Cordiali saluti, Oleg Yaroshevych